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

时间:2013-03-08 15:58:48

标签: .net architecture

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

我目前有两个程序集:MyCompany.InformixConnectorMyCompany.InformixConnector.Com

.Com程序集引用了“核心”程序集。但是,如果较低级别的程序集引用较高级别的程序集,则会感觉不对。

我想到了两个选择:

  1. 重命名核心程序集,使它们处于同一级别:MyCompany.InformixConnector.CoreMyCompany.InformixConnector.Com
  2. 将COM项目放在不同的命名空间中,例如MyCompany.InformixConnectorForCom
  3. 我认为基本问题是:COM包装器是否应该与它包装的代码位于同一名称空间中?

1 个答案:

答案 0 :(得分:1)

MS naming guidelines表示嵌套命名空间没有任何问题依赖于更高级别的命名空间:

  

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

可以将相同的逻辑应用于程序集命名。在您的特定情况下,我会将核心功能放入MyCompany.InformixConnector.Core命名空间和程序集中,这将明确指出常见内容的位置。

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

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