并行命名空间冲突

Nat*_*end 2 c# unit-testing namespaces

我有一个单元测试项目,它反映了我的应用程序的目录和命名空间结构,除了单元测试项目将所有内容包装在Test命名空间中.所以这个类的测试:

MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)

将在这个类中定义:

Test.MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)

当我尝试创建常规(非单元测试)项目中定义的对象实例时,如果在单元测试项目中也存在同名的类,那么我在单元测试项目中遇到了问题.使用上面的示例,如果我MyClass使用其完全限定的类型名称在单元测试项目中创建类型的变量:

MyModule.MyNamespace.MySubNamespace.MyClass myobject = new ....
Run Code Online (Sandbox Code Playgroud)

编译器假定我指的MyClassTest命名空间中定义的对象,并不将类型名称视为完全限定名称.

简单的解决方案是重构我的单元测试命名空间,但我很好奇是否有办法解决这个问题.我需要一些方法来"强制"编译器将类型名称视为完全限定 - 一种"突破" Test命名空间的方法.有没有办法做到这一点?

如果没有,是否有更好的约定来明确命名我的单元测试?

Nat*_*end 5

经过一些搜索,我遇到了global关键字,它告诉编译器假设类型名称是完全限定的:

global::MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)

这是globalMSDN上关键字的参考.