读书人

在代码里边写quot;[ComVisible(true)]quot;和在

发布时间: 2013-09-09 20:31:09 作者: rapoo

在代码里面写"[ComVisible(true)]",和在工程属性里设置com可见,这两个有什么区别吗?
我自己的代码里面如果不写[ComVisible(true)]这样的语句,而只在工程属性里面选择com可见(如下图),编译出来的dll也是可以被vc写的com客户端调用的。



问题是: 什么时候才需要显示的声明[ComVisible(true)]呢?我这里看到好像工程属性里面设置了,代码就不需要了啊?

还请高手指点!
[解决办法]
实际上会在Properties节点下的AssemblyInfo.cs下添加[assembly: ComVisible(true)]
[解决办法]
前者提供更精细的粒度,如果有些类型你不想公开的话。
[解决办法]
在工程属性里设置的是全局的,表名该程序集的所有类都会COM可见(除非另外设置了[ComVisible(false)]。而在类的定义上加[ComVisible(true)],则代表这个类是COM可见的,不管工程属性有无设置COM可见性。

读书人网 >C#

热点推荐