1

我有一个带有命名空间的 .NET 项目MyCompany.InformixConnector。我添加了一个 COM 包装器作为单独的项目/程序集,它只会部署到少数客户端。我正在为如何组织项目/程序集而苦苦挣扎。

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

.Com程序集引用了“核心”程序集。但是,让较低级别的程序集引用更高级别的程序集感觉是错误的。

我想到了两种选择:

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

我想基本问题是:COM 包装器是否应该与它所包装的代码位于同一个命名空间中?

4

1 回答 1

1

MS 命名指南指出,嵌套命名空间依赖于更高级别的命名空间没有任何问题:

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

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

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

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

于 2013-03-08T17:18:02.837 回答