MSDN has this article about [ComVisible] attribute. I don\'t quite get what happens when one sets [ComVisible(true)]
.
MSDN says
T
The trick is you can also add this attribute at assembly level (in AssemblyInfo.cs). If you specify [assembly: ComVisible(true)]
(or don't specify that at assembly level and so have the same effect by default) then all the public classes and interfaces and public methods thereof become COM-visible by default.
You could just as well set [assembly: ComVisible(false)]
at assembly level and then all the public entities would by default have the same effect as if they had [ComVisible(false)]
on them and so you could only mark those classes/interfaces/methods COM-visible ([ComVisible(true)]
) which you really need.
This helps you to not expose too much when you have lots of public entities as here. Without this mechanism you would have to set [ComVisible(false)]
to each class/interface/method that you don't want exposed. Using [assembly: ComVisible(false)]
lets you only expose the stuff you need.
And you only can expose public
entities to COM (be default or explicitly) - entities with stricter visibility can't be exposed to COM.