質問

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)]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top