0

可能重复:
我们什么时候必须在 C# 中使用 extern 别名关键字?

我有一个程序集,它主要由解决方案中其他项目共享的文件组成。换句话说,整个解决方案大约有 10 MB,但我将该功能的一小部分导出到一个单独的 200 KB 程序集中。解决方案中的所有项目都在 NUnit 测试项目中,除了 UI。

问题是,我去为其中一个共享文件添加测试,但出现以下错误:

The type 'xxx' exists in both 'c:\path\to\project\Logic.dll'
and 'c:\path\to\project\Exported.dll'.

我知道我可以使用反射并提供一个程序集限定名称,或者我可以将导出的程序集测试删除到一个单独的项目中,但两者都会很痛苦。我只是想在编译时指定使用 Logic.dll 中的 xxx 版本。是否可以在编译时指定要使用的 Type 版本,所以它看起来像这样:

xxx blah = new xxx();
blah.DoSomething(123);

代替:

Type t = Type.GetType("Logic.xxx, Logic");
object blah = Activator.CreateInstance(t);
t.GetMethod("DoSomething").Invoke(blah, new object[] { 123 });
4

2 回答 2

0

您应该能够根据您想要的对象类所在的命名空间来指定引用。类似这样的东西:

LogicNamespace.XXX blah = new LogicNamespace.XXX();

于 2012-12-06T22:30:33.153 回答
0

Hans Passant 的评论是正确的答案:“extern alias”是我一直在寻找的,而我们何时必须在 C# 中使用 extern alias 关键字?给出如何使用它的良好指示。

于 2012-12-06T23:00:34.350 回答