我有一个命名空间为MyCompany.InformixConnector
的。net项目。我添加了一个COM包装器作为一个单独的项目/程序集,只部署到少数客户端。我正在努力如何组织项目/组件。
我目前有2个组件:MyCompany.InformixConnector
和MyCompany.InformixConnector.Com
.Com
程序集引用了"核心"程序集。但是,让低级程序集引用高级程序集感觉是错误的。
我考虑了两种选择:
- 重命名核心程序集,使它们都在同一级别:
MyCompany.InformixConnector.Core
和MyCompany.InformixConnector.Com
- 将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.Core
和MyCompany.InformixConnector.Interop
(如果需要)。