我有一个单元测试项目,它反射(reflect)了我的应用程序的目录和命名空间结构,但单元测试项目将所有内容都包装在 Test
命名空间中。所以对这个类进行测试:
MyModule.MyNamespace.MySubNamespace.MyClass
将在此类中定义:
Test.MyModule.MyNamespace.MySubNamespace.MyClass
当我尝试创建常规(非单元测试)项目中定义的对象实例(如果单元测试项目中也存在同名类)时,我会在单元测试项目中遇到问题。使用上面的示例,如果我使用其完全限定类型名称在单元测试项目中创建类型为 MyClass
的变量:
MyModule.MyNamespace.MySubNamespace.MyClass myobject = new ....
编译器假定我引用的是 Test
命名空间中定义的 MyClass
对象,并且不会将类型名称视为完全限定名称。
简单的解决方案是重组我的单元测试命名空间,但我很好奇是否有解决方法。我需要某种方法来“强制”编译器将类型名称视为完全限定的 - 一种“突破”Test
命名空间的方法。有什么办法可以做到这一点吗?
如果没有,是否有更好的约定来明确命名我的单元测试?
最佳答案
经过更多搜索,我发现了 global
关键字,它告诉编译器假设类型名称是完全限定的:
global::MyModule.MyNamespace.MySubNamespace.MyClass
关于c# - 并行命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998413/