ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# COM 类示例(C# 编程指南) 下面是一个公开为 COM 对象的类的示例。将这些代码放置到 .cs 文件中并添加到您的项目中后,请将**“Register for COM Interop”**属性设置为**“True”**。有关更多信息,请参见[NIB: How to: Register a Component for COM Interop](https://msdn.microsoft.com/zh-cn/library/w29wacsy.aspx)。 向 COM 公开 Visual C# 对象要求声明一个类接口、一个事件接口(如果需要)和类本身。类成员必须遵循下列规则才能对 COM 可见: * 类必须是公共的。 * 属性、方法和事件必须是公共的。 * 属性和方法必须在类接口上声明。 * 事件必须在事件接口中声明。 其他没有在这些接口中声明的类的公共成员对于 COM 是不可见的,但它们对于其他 .NET Framework 对象将是可见的。 若要向 COM 公开属性和方法,必须在类接口上声明这些属性和方法,并用 **DispId** 特性予以标记,然后在类中实现它们。成员在接口中声明的顺序即是用于 COM vtable 的顺序。 若要从类中公开事件,必须在事件接口上声明这些事件,并用 **DispId** 特性予以标记。该类不应实现此接口。 类实现类接口;它可以实现多个接口,但第一个实现将作为默认类接口。在此处实现向 COM 公开的方法和属性。它们必须标记为是公共的,并且必须与类接口中的声明匹配。同时,在此处声明由类引发的事件。它们必须标记为是公共的,并且必须与事件接口中的声明匹配。 ``` using System.Runtime.InteropServices; namespace project_name { [Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")] public interface ComClass1Interface { } [Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface ComClass1Events { } [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(ComClass1Events))] public class ComClass1 : ComClass1Interface { } } ``` ## 请参阅 [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [互操作性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173184.aspx) [“项目设计器”->“生成”页 (C#)](https://msdn.microsoft.com/zh-cn/library/kb4wyys2.aspx)