- - PR -
VS.net2005での型変換のエラーについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-10 13:52
お世話になっております。
過去ログを参照しましたが、解決に至りませんでしたので、 書き込みさせて頂きます。 開発環境はVS.net2005です。 MDI画面を使用しておりMDIの親画面(fmMain)から、 子画面A(fmChild_A)を表示し、子画面A上のボタンクリックで、 子画面B(fmChild_B)を表示させようとしています。 子画面Aと子画面Bは別DLLで作成してあります。 子画面Bを表示する際、親画面のクラスを使用して 表示を行いたいと思っています。 親画面クラス(Businessクラス)のインスタンスを行わずに使用したいため、 親画面の中でパブリックプロパティ(MainBusiness)を使用して 渡しています。 ********************************************************** fmChild_Aのソース 'MainのBusinessクラスを宣言 Dim main As Main.Business '自分の親画面をfmMain型に変換してプロパティの値を取得 main = CType(Me.MdiParent, fmMain).MainBusiness ←エラー発生 'fmChild_Bの表示 main.CreateChildWindow("Sample.dll", "fmChild_B") ********************************************************** 2003でコーディングしていた時は、このソースで正常に動作していたのですが、 2005で動かしたところ、コンパイルは正常終了しており、エラーも警告も 出ないのに、実行すると以下のようなエラーで落ちてしまいます。 「型 'fmMain' のオブジェクトを型 'fmMain' にキャストできません。」 Me.MdiParentを一度、Object型にした後、再度fmMain型にキャストしても、 やはり同じエラーとなってしまいます。 何かご存知の方がいらっしゃいましたら、ご教授の程宜しくお願い致します。 | ||||
|
投稿日時: 2007-01-10 15:15
これ、意味不明な例外メッセージですね。 型が合っているのにキャストできないとは... 名前空間が違った別のクラスなんてことはないですよね。 とりあえず、再現できるミニマム コードを提示できないでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-01-10 21:40
Web Service を利用したアプリケーションを作ったときに、同じようなエラーを出した記憶が。。。
原因は、じゃんぬさんのおっしゃるとおり、名前空間が違った別のクラスでした。 Web Service のサーバ側でシリアライズしたものを、クライアントでデシリアライズ出来なかったんですね。両方で同じ名前のクラスを作っていて、VB の場合、ルートの名前空間がプロジェクトのプロパティに隠れているため、同じだと思いこんでいたという落とし穴でした。 # イヤ、定義が2つあるのがおかしいと気付よ ちげ〜 この場合、実行時型解決なのが問題じゃないかな? [ メッセージ編集済み 編集者: Jitta 編集日時 2007-01-10 21:42 ] |
1