如何从特定程序集引用命名空间?

所以这是我的问题。

  • 我的(测试)项目引用了Castle Windsor和Rhino Mocks。
  • 我正在创建一个从Castle.Core.dll程序集实现Castle.Core.Interceptor.IInterceptor的类
  • 在构建Rhino Mocks时,Ayende使用了Castle.Core.Interceptor并在Rhino.Mocks.dll中包含了整个darn命名空间。

所以当我尝试构建时,我得到了错误

类型’Castle.Core.Interceptor.IInterceptor’存在于’c:… \ Libraries \ Rhino.Mocks.dll’和’c:… \ Libraries \ Castle.Core.dll’中

那么我如何指定我想使用Castle.Core.dll中的IInterceptor实例而不是Rhino Mocks中包含的实例?

让我们在这里抛出具体的答案,以防有人后来出现。 来自这里的文章。

  • 在项目引用下选择两个程序集中的一个(在我的例子中,我选择了Castle.Core)。 点击F4调出属性并输入别名CastleCore
  • 在有问题的cs文件的顶部放置extern alias CastleCore;
  • 使用CastleCore::Castle.Core.Interceptors.IInterceptor引用您的类。 或者在我的情况下,我只是做了:

使用cci = CastleCore :: Castle.Core.Interceptors;

现在可以参考了

 cci.IInterceptor 

您可以使用extern alias来对其中一个程序集进行别名以防止出现歧义。