COM包装器的命名空间/程序集设计



我有一个命名空间为MyCompany.InformixConnector的。net项目。我添加了一个COM包装器作为一个单独的项目/程序集,只部署到少数客户端。我正在努力如何组织项目/组件。

我目前有2个组件:MyCompany.InformixConnectorMyCompany.InformixConnector.Com

.Com程序集引用了"核心"程序集。但是,让低级程序集引用高级程序集感觉是错误的。

我考虑了两种选择:

  1. 重命名核心程序集,使它们都在同一级别:MyCompany.InformixConnector.CoreMyCompany.InformixConnector.Com
  2. 将COM项目放在不同的命名空间中,如MyCompany.InformixConnectorForCom

我想最基本的问题是:COM包装器应该和它包装的代码在同一个命名空间中吗?

MS命名准则指出,嵌套的命名空间依赖于更高级别的命名空间是没有问题的:

嵌套命名空间应该依赖于包含元素的类型名称空间。例如,System.Web.UI.Design中的类依赖于在System.Web.UI中的类。但是,System.Web.UI . js中的类不依赖System.Web.UI.Design中的类。

同样的逻辑可以应用于程序集命名。在您的特殊情况下,我会将核心功能放入MyCompany.InformixConnector.Core名称空间和汇编中,这将明确指出常见的东西在哪里。

然后为互操作性MyCompany.InformixConnector.Interop创建一个命名空间,并将处理com和其他3d派对所需的所有通用内容放在那里。如果没有这样的东西,你可以跳过它,并根据需要添加它。

然后为您的com包装器MyCompany.InformixConnector.Interop.Com创建名称空间和程序集。该程序集将引用MyCompany.InformixConnector.CoreMyCompany.InformixConnector.Interop(如果需要)。

最新更新