类型名称 XXXX 在类型 XXXX 中不存在

The type name XXXX does not exist in the type XXXX

提问人:Paul Zahra 提问时间:12/6/2019 最后编辑:Paul Zahra 更新时间:12/6/2019 访问量:225

问:

我有以下代码(如果我留下警告,它可以编译并正常工作,我还没有使用 global:: hack 对其进行测试):

namespace NotifierService.Models {}

namespace NotifierService
{
    using Models;
}

“using Models”语句带有下划线,说(在错误列表中,这只是一个警告级别问题):

应限定命名空间“NotifierService.Models”的使用指令

因此,我将其限定为:

using NotifierService.Models;

并出现以下错误级别问题:

类型名称“Models”在类型“NotifierService”中不存在

PS 我知道我可以使用以下方法“破解”它以删除警告/错误,但我正试图了解它发生什么/为什么发生,因为这种效果是影响多个命名空间的应用程序范围。

using global::NotifierService.Models;

答:菲尔多给了我一个解决方案......有一个问题,因为在我的 Windows 服务中,基类使用与命名空间相同的名称,因此通过重命名所有命名空间,应用程序可以毫无问题地编译(一旦我完全限定了 using 语句。

但是,我刚刚实现了一个更简洁的解决方案(因为我更喜欢命名空间与项目同名,因为它使未来的引用更合乎逻辑/可维护):

保持命名空间不变,在我使用 NotifierService.Models 命名空间中的类的地方,我只需按如下方式引用它们:

List<Models.TaxiModel>

这允许我删除“使用模型”......不过,看起来仍然有点奇怪和“黑客”。

C# 命名空间 windows-services using-directives global-namespace

评论

1赞 Fildor 12/6/2019
你有班级吗?NotifierService
2赞 Paul Zahra 12/6/2019
@TraeMoore哈哈,我很快就构建了这段代码,以说明我的问题,我的坏处。
1赞 Fildor 12/6/2019
只是出于好奇:您是否介意重命名并尝试错误是否仍然存在?我以前遇到过同名命名空间和类的问题。不记得它到底是什么了。无论如何,重命名类更方便。NotifierService
1赞 Paul Zahra 12/6/2019
@Fildor我离开了这个类,因为它对服务架构来说更为基础,但是我将所有“namespace NotiferService”条目重命名为“namespace Notifier”,问题就消失了...这很奇怪,因为我在多个其他应用程序(Windows 服务库的同名命名空间和类)中做同样的事情,并且它们没有问题,只是检查了几个项目)。
1赞 Paul Zahra 12/6/2019
@Fildor 如果你想把你的帖子作为答案,我会给你......刚刚找到了一种更简单的工作方式......我现在将编辑我的问题。

答:

2赞 Fildor 12/6/2019 #1

我不完全知道为什么会发生这种情况,但是命名空间和其中的类具有相同的名称可能会导致一些问题。

可悲的是,我没有保留发生在我身上的项目,所以我不能重申我遇到的问题。我只知道这是一个问题,这是因为名字相同。

该项目的解决方案是重命名其中一个命名空间或类。如果我没记错的话,我们重命名了这个类。

评论

1赞 Paul Zahra 12/6/2019
它可能是......我发现与此消息相关的其他几个不同问题,并且有几个确实指出该消息非常不准确/无益/具有误导性......无论如何,感谢您的帮助!周末愉快!
0赞 Fildor 12/6/2019
只是用谷歌搜索了一下,似乎不是这样。这是关于 using 指令本身。删除了该部分。