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

时间:2009-02-05 17:59:25

标签: c# .net 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:... \图书馆\ Castle.Core.dll'

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

2 个答案:

答案 0 :(得分:47)

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

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

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

现在可以参考

cci.IInterceptor

答案 1 :(得分:7)

您可以使用extern alias为其中一个程序集添加别名,以防止出现歧义。