MSDN有属性。当设置[ComVisible(true)]
时,我不太明白会发生什么。
MSDN说
默认值为真,这表明托管类型对COM是可见的。为了使公共托管程序集、和类型成为可见的,不需要此属性;它们在默认情况下对COM是可见的。只能显示公共类型。
所以他们说,默认情况下,公共类型对COM是可见的。但他们也表示,只有公共类型可以通过设置[ComVisible(true)]
来显示。这是没有意义的:如果公共类型在默认情况下是可见的,那么设置[ComVisible(true)]
如何使公共类型可见?如果他们已经可见,他们将如何变得更可见?
也许我的理解是不正确的。如果有人能对上述声明作一些说明,我将不胜感激。
发布于 2013-03-29 08:50:31
诀窍是您还可以在程序集级别(在AssemblyInfo.cs中)添加此属性。如果您指定了[assembly: ComVisible(true)]
(或者没有在程序集级别指定它,在默认情况下具有相同的效果),那么所有公共类和接口及其公共方法在默认情况下都是可见的。
您也可以在程序集级别设置[assembly: ComVisible(false)]
,然后所有公共实体在默认情况下都会产生相同的效果,就像它们上面有[ComVisible(false)]
一样,因此您只能标记真正需要的类/接口/方法COM-可见([ComVisible(true)]
)。
这可以帮助您在有大量公共实体(如这里 )时不公开太多。如果没有这种机制,就必须将[ComVisible(false)]
设置为每个不希望公开的类/接口/方法。使用[assembly: ComVisible(false)]
可以使您只公开所需的内容。
而且您只能将public
实体公开给COM (默认的或显式的)--更严格的可见性的实体不能暴露给COM。
https://stackoverflow.com/questions/15688395
复制相似问题