C# 为什么要将ClassInterface属性应用于类?

C# 为什么要将ClassInterface属性应用于类?,c#,.net,C#,.net,什么时候我们需要将ClassInterface属性应用于类,就像这里所做的那样?ClassInterfaceAttribute用于声明您的类对COM调用方的可见程度,也就是说,您的类是否能够很好地处理COM世界中试图使用您的类的某些内容。ClassInterfaceType枚举中包含三个选项,您可以将其指定为ClassInterfaceAttribute重载的参数。下面是三个类声明的示例,每个类声明都有不同的InterfaceType选择: 以下说明了ClassInterfaceAttrib

什么时候我们需要将
ClassInterface
属性应用于类,就像这里所做的那样?

ClassInterfaceAttribute
用于声明您的类对COM调用方的可见程度,也就是说,您的类是否能够很好地处理COM世界中试图使用您的类的某些内容。
ClassInterfaceType
枚举中包含三个选项,您可以将其指定为
ClassInterfaceAttribute
重载的参数。下面是三个类声明的示例,每个类声明都有不同的InterfaceType选择:

以下说明了
ClassInterfaceAttribute
的使用:

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

将其公开给其他代码,特别是本机代码。从ComVisibleAttribute开始阅读。
// 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
{

}