如何解决命名空间冲突?

时间:2017-02-08 15:57:58

标签: c# .net namespaces

在创建测试类时,我在我的项目中遇到了名称空间的奇怪问题。

所以我创建了一个nuget包,其名称空间是

ppumkin.APIService

然后我为测试创建了另一个解决方案,该解决方案的命名空间是

tests.ppumkin.ControllersAPI

问题是我正在尝试访问我的nuget packages dll对象,但是visual studio告诉我,that对象在tests.APIService中不存在,但我编写的代码是

var obj = new ppumkin.APIService.TheClass()

如何告诉Visual Studio该对象不在tests.ppumkin.APIService中,而只在ppumkin.APIService 中(例如 - 没有带前缀的测试命名空间)

如果我在测试项目中定义的所有命名空间之外使用相同的对象创建,我可以解决这个问题。

3 个答案:

答案 0 :(得分:2)

这就是解决问题的方法,为指向服务命名空间的使用创建别名。然后可以使用别名来引用包含您尝试创建的类和。的实例的正确名称空间。

hello world!

答案 1 :(得分:1)

您还可以使用global::表示您正在使用从全局根开始的名称空间名称,而不是某些包含的名称空间:

var obj = new global::ppumkin.APIService.TheClass()

虽然我同意重命名命名空间可能是一个更明智的长期行动。

答案 2 :(得分:0)

从评论中我意识到测试项目的命名空间不正确。

遵循ppumkin.顶级域的约定,前缀为test我正在更改整个命名空间封装。

在我的情况下要做的正确的事情 - 因为我可以控制命名空间并且我希望它们尽可能正确地将测试项目的命名空间修复为

ppumkin.Tests.
ppumkin.APIService.
ppumkin.Domain.Models.
ppumkin.Domain.Interfaces.

现在一切都按预期工作 - 这只是一个盲目的命名问题