没有得到以下from MSDN:
ClassInterfaceType.None
表示没有类接口 为班级生成的。如果不 接口是明确实现的, 这个班只能提供后期限制 通过
IDispatch
访问 接口。这是推荐的ClassInterfaceAttribute
的设置。 使用ClassInterfaceType.None
是 揭示功能的唯一方法 通过接口实现 明确地由班级。
[ComVisible(true)]
是COM可见性必须吗?
答案 0 :(得分:8)
有关第一个问题的扩展,请参阅this blog post。关键在于,除非您指定ClassInterfaceType.None
,否则会生成额外的接口,如果您更改方法的顺序,则可能会导致二进制兼容性问题,请更改其签名或删除其中的一些。一个更好的选择是明确定义一个接口并从中继承您的类,指定ClassInterfaceType.None
。
ComVisible(true)
不是COM可见性的必需品。默认情况下,公共类和所有公共类的所有公共方法都是COM可见的,所有其他实体都不是COM可见的。如果需要更改它,则使用ComVisible属性,通常减少COM可见类的数量,因为每个COM可见类注册表项和类型库条目都会生成,这会导致不必要的注册表污染并使类型库膨胀。 IMO使用ComVisible明确标记所有公共实体是个好主意。