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

Geo*_*uer 30 .net c# assemblies

所以这是我的问题.

  • 我的(测试)项目引用了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中包含的实例?

Geo*_*uer 49

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

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

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

现在可以参考了

cci.IInterceptor
Run Code Online (Sandbox Code Playgroud)


And*_*are 7

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