MSDN has this article about [ComVisible]
attribute。当我设置[ComVisible(true)]
时,我不太明白会发生什么情况。[ComVisible]默认和公共类COM暴露有什么关系?
MSDN说
的默认值为true,这表明托管类型是COM可见。此属性不需要制作公共管理组件和类型可见;默认情况下它们对COM可见。只有公共类型可以显示。
所以他们说默认情况下公共类型对COM来说是可见的。但他们也说只有公共类型可以通过设置[ComVisible(true)]
而可见。这没有意义:如果公共类型默认可见,那么如何设置[ComVisible(true)]
使公共类型可见?如果他们已经可见,他们将如何变得更加明显?
也许我的理解是不正确的。如果有人能够对上述说法进行阐述,我将不胜感激。
一个令人困惑的方面是,默认的Visual Studio类库模板添加了[assembly:ComVisible(false)]属性(在AssemblyInfo.cs中)。这会将项目中所有类型的“默认”设置为false。项目属性的“组件信息”中的“使组件可见”标志设置此项。 – Govert
这里有一个窍门。 ComVisible的默认值是正确的,如果它不是由任何人设置的,但Visual Studio将此值设置为false。这意味着除非手动打开它,否则您的程序集将不会是ComVisible。但是在VS2008之前,这个属性默认设置为true。 – Johnny