2

VB.NETで相互運用機能を使用してオブジェクトを作成しようとすると、クラスにコンストラクターがないVB6場合に次のエラーが発生することに気付きました。VB.NET

エラー 430 - クラスは自動化をサポートしていません

私がしなければならないのは、VB.NETクラスに空のコンストラクターを入れることだけです。

Public Sub New()

End Sub

そしてエラーは回避されます。これは予想される動作ですか?

4

1 に答える 1

2

VB6は、COMコクラスのクラスファクトリを使用して、COMを介してオブジェクトを作成します。基になるメソッドはIClassFactory::CreateInstance()です。このメソッドでは、ファクトリに引数を渡すことはできません。したがって、[ComVisible] .NETクラスには、引数をとらないコンストラクターが必要です。

引数を取るコンストラクターを自分で指定しない限り、.NETはクラスのデフォルトコンストラクターをすでに作成しています。使用されることはありませんが、削除することをお勧めします。これで、空のデフォルトコンストラクタも必要なくなりました。

于 2012-11-15T14:53:19.303 に答える