2009-04-07 1 views
0

、相互運用オブジェクトのメソッドを呼び出します。それから私が(コンパイラがそれを認識していなくても)呼び出すオブジェクト(InitialiseData)に関数があります。は、私は、それ自体は、プレーンオブジェクト(<strong>システム</strong>)を返し相互運用クラス(VB6で書かれ<strong>接続</strong>、)、上の関数を呼び出していVB対C#のC#

var isInitialised = Connection.System.InitialiseData(path); 

問題は、そのシステムオブジェクトが単なるオブジェクトを返すため、コンパイルエラー「シンボルを解決できません」が表示されることです。私は理由を知ることができますが、同じことはVB.NETで正常に動作します:

Dim isInitialised As Boolean = Connection.System.InitialiseData(path) 

おそらく、VB.NETはC#がないのに対し、暗黙的の種類は、遅延バインディングできますバックグラウンドで何かをしているのですか?同様に無知な方法でC#をコンパイルする方法はありますか?実際に

この場合には、私は最初の明示的な相互運用型にオブジェクトをキャストすることによって、それを回避することができるように見える:

var system = (QLO.System)Connection.System; 
var isInitialised = system.InitialiseData(path); 

しかし、私はまだ私ウォン例のための答えに興味があります'は型にキャストできますが、その上でも関数を呼び出す必要があります。もしこれがばかげた質問であれば私を許して、私はVB.NETからC#に移行し始めたばかりです...ありがとう!

答えて

1

4.0では、レイトバインディングがC#になっています。あなたはすぐにVB.NETで関数をラップし、VB6メソッドを呼び出すVB.NETメソッドを呼び出すためにC#を使用します。

適切な型にキャストするとC#で動作するので、VB.NETで正しい型が認識され、C#ではObjectとして認識されますか?

関連する問題

 関連する問題