c# - 并行命名空间冲突

标签 c# unit-testing namespaces

我有一个单元测试项目,它反射(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

Here's the reference for the global keyword on MSDN.

关于c# - 并行命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998413/

相关文章:

javascript - node.js 中的命名空间导入

c# - 如何防止 EF 验证在 DBContext.SaveChanges() 期间未映射的属性

c# - 重构具有不同属性的相同循环

C# float 神奇地改变值(value)

ios - 实现 Localytics SDK 会阻止构建单元测试

python - 导入单元测试错误

c# - 如何从客户端调用带有序列化对象的 C# Web 服务

javascript - 有没有办法正确模拟单元测试的重新选择选择器?

c++ - 我应该对 C++ 中的非顺序常量使用枚举还是多个常量?

C# 命名空间和程序集最佳实践