【发布时间】:2013-03-19 06:40:22
【问题描述】:
MSDN 有this article about [ComVisible] attribute。我不太明白当设置[ComVisible(true)] 时会发生什么。
MSDN 说
默认为 true,表示托管类型对 COM 可见。 公共托管程序集和类型可见不需要此属性;默认情况下,它们对 COM 可见。只能使公共类型可见。
所以他们说公共类型默认对 COM 可见。但他们也说只有公共类型可以通过设置[ComVisible(true)] 可见。这没有意义:如果公共类型默认可见,那么设置[ComVisible(true)] 如何使公共类型可见?如果它们已经可见,它们将如何变得更加可见?
也许我的理解不正确。如果有人能对上述陈述有所了解,我将不胜感激。
【问题讨论】:
-
一个令人困惑的方面是默认的 Visual Studio 类库模板添加了一个 [assembly:ComVisible(false)] 属性(在 AssemblyInfo.cs 中)。这会将项目中所有类型的“默认”设置为 false。项目属性的程序集信息中的“使程序集 COM-Visible”标志设置此。
-
这里有个窍门。 ComVisible 的默认值是 true 好吧,如果它不是由任何人设置的,但 Visual Studio 将此值设置为 false。这意味着除非您手动打开它,否则您的程序集不会是 ComVisible。但是在VS2008之前这个属性确实是默认设置为true的。
标签: c# com comvisible