C#クラスからのVB 6.0のオートメーションエラー
-
06-07-2019 - |
質問
C#クラスライブラリを作成し、VB 6.0アプリケーションで使用しています。しかし、文字列を返すメソッドを呼び出そうとすると、自動化エラーが発生します。それ以外の場合、C#クラスは正常に動作しています。
理由は何ですか?
解決
fbinderが言うように、アセンブリに強力な署名をして、いくつかの属性を使用する必要があります。使用する属性は(正常に)次のとおりです。
[ComVisible( true )]
[ClassInterface( ClassInterfaceType.None )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[ComDefaultInterface( typeof( IExposedClass ) )]
public class ExposedClass : IExposedClass
{
//need a parameterless constructor - could use the default
public ExposedClass() { }
public string GetThing()
{
return "blah";
}
}
[ComVisible( true )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IExposedClass
{
string GetThing();
}
他のヒント
クラスライブラリに強く署名し、それをregasmに登録し、これをクラス定義の前に配置する必要があります。
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]
また、インターフェイスを定義して、目的のメソッドを公開する必要があります。インターフェースには次の属性が必要です。
[Guid("Interface GUID")]
[ComVisible(true)]
所属していません StackOverflow