C#クラスライブラリを作成し、VB6.0アプリケーションで使用しています。しかし、(文字列を返す)メソッドを呼び出そうとすると、自動化エラーが発生します。それ以外の場合、C#クラスは正常に実行されています。
なぜですか?
C#クラスライブラリを作成し、VB6.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)]