MSDN有这篇关于[ComVisible]
属性 。 我不完全得到,当一个设置发生了什么[ComVisible(true)]
。
MSDN说:
默认值是true,这表示托管类型是COM可见。 不需要这种属性使公共管理组件和类型可见 ; 他们是默认COM可见。 只有公共类型,可取得明显。
所以他们说的公共类型对COM可见默认。 但他们也说, 只有公共类型可以通过设置可见 [ComVisible(true)]
。 它不会是有道理的:如果公共类型,默认情况下可见的,那么怎么设置[ComVisible(true)]
公开类型可见? 如果他们已经看到他们将如何获得更多的可见?
也许,我的理解是不正确的。 我将不胜感激,如果任何人都可以放一些轻上述声明。
它不会是有道理的,当公共类型,默认情况下不可见,因此如何设置标记有ComVisible特性属性为true [标记有ComVisible特性(真),使公共类型可见。
他们看到默认情况下,因为ComVisibleAttribute的默认值是true。 明确其值设置为true不会改变任何东西,它只是使你的意图更加清晰。 这是的第一行的文档 ,你发现:
默认值是true,这表示托管类型是COM可见。 不需要这种属性使公共管理组件和类型可见; 他们是默认COM可见。 只有公共类型,可取得明显。 的属性不能用来使否则内部或被保护类型COM可见或进行不可视类型的成员是可见的。
基本上,你可以把它像编译器总是添加[ComVisibleAttribute(true)]
对你的代码在默认情况下,如果你不自己做。
你需要设置该属性的唯一原因是为了防止公共类型被COM可见(在这种情况下,你将它设置为false)。 默认已经确保了自己的知名度。
显然,非公有制类型(例如,private和protected)不能和永远不会是COM可见。 此属性与无障碍等类型上没有任何影响。
关键是,你还可以添加在(在AssemblyInfo.cs中)汇编级这个属性。 如果指定[assembly: ComVisible(true)]
(或不指定,在装配水平等都有默认的相同效果),那么所有的公共类和接口和公有方法及其成为COM可见默认。
你也可以同样设置[assembly: ComVisible(false)]
在装配水平,然后所有的公共实体将在默认情况下具有相同的效果,如果他们有[ComVisible(false)]
他们,那么你只能标记那些类/接口/方法COM可见( [ComVisible(true)]
),你真正需要的。
这有助于当你有大量的公共实体,你不会暴露太多在这里 。 如果没有这个机制,你就必须设置[ComVisible(false)]
每个类/接口/方法,你不想暴露。 使用[assembly: ComVisible(false)]
,您可以只公开你需要的东西。
而你只可以公开public
实体COM(默认是或明确) -更严格的知名度实体不能暴露在COM。