我有一个程序集,它主要由解决方案中其他项目共享的文件组成。换句话说,整个解决方案大约有 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 });