6
[ClassInterface(ClassInterfaceType.None)]
Class Program()
{
}

ClassInterfaceここで行われているように、属性をクラスに適用する必要があるのはいつですか?

4

1 に答える 1

4

ClassInterfaceAttributeは、クラスが COM 呼び出し元にどのように表示されるかを宣言するために使用されます。つまり、クラスを使用しようとする COM ワールドの何かとクラスが適切に連携するかどうかを宣言します。ClassInterfaceTypeのオーバーロードのパラメータとして指定できる列挙に含まれる 3 つのオプションがありますClassInterfaceAttribute。これは MSDN からのもので、以下は 3 つのクラス宣言の例で、それぞれが異なる InterfaceType を選択しています。

ClassInterfaceAttributeMSDN で

ClassInterfaceTypeMSDN で

の使用法を次に示しますClassInterfaceAttribute

// This one will not be visible to COM clients.
[ClassInterface(ClassInterfaceType.None)]
public class MyClass1
{

}

// This one will provide an interface for COM clients, 
// but only when/if one is requested of it.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass2
{

}

// This one will, immediately upon instantiation, 
// automatically include an interface for COM clients.
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MyClass3
{

}
于 2012-09-17T04:14:47.200 に答える