如何优雅地防止暴露于COM web服务代理?(How to elegantly prevent a

2019-09-02 15:15发布

我有由非托管C ++应用消耗的进程内COM服务器使用C#组件。 装配消耗了永远不会改变,因此没有必要不断更新Web服务代理类web服务。 这就是为什么代理类创建一次, Reference.cs文件被简单地放入仓库,只有从那里编译。

问题是,默认情况下,Web服务代理类是公共的,因此暴露在COM。 这种膨胀的类型库,污染注册表。 更改知名度内部断裂装配,使这些实体需要保持公众开放,但不必暴露在COM。

装聋作哑的方法是接近每一个公共接口/类的Reference.cs文件,并用它标记

[System.Runtime.InteropServices.ComVisible(false)]

之后,它不再暴露在COM。

有没有更好的办法?

Answer 1:

你可以

  • 纪念集会本身不被ComVisible ,然后明确标记要暴露给所有接口/类/枚举COM作为ComVisible
  • 使用第二个文件和部分类,以纪念你的代理类型是ComVisible(false)

     [System.Runtime.InteropServices.ComVisible(false)] partial class YourProxyType {} [System.Runtime.InteropServices.ComVisible(false)] partial class AnotherProxyType {} 


文章来源: How to elegantly prevent a webservice proxy from being exposed to COM?