C# 将using语句放入命名空间失败
我试图用stylecop对一些旧代码进行适当的样式化。它要求将using语句放入其中。它起作用了 除了一个人之外,其他人都很好。我已将问题简化为以下代码C# 将using语句放入命名空间失败,c#,namespaces,C#,Namespaces,我试图用stylecop对一些旧代码进行适当的样式化。它要求将using语句放入其中。它起作用了 除了一个人之外,其他人都很好。我已将问题简化为以下代码 namespace B.C { using System; public class Hidden { public void SayHello() { Console.WriteLine("Hello"); } } } namespac
namespace B.C
{
using System;
public class Hidden
{
public void SayHello()
{
Console.WriteLine("Hello");
}
}
}
namespace A.B.C
{
using B.C;
public class Program
{
static void Main(string[] args)
{
new Hidden().SayHello();
}
}
}
这会导致编译错误
“找不到类型或命名空间名称‘隐藏’(是否缺少using指令或程序集引用?)
如果我使用B.C移动在名称空间A.B.C上方,然后正确构建。隐藏的类是由不同的团队开发的,我们无法修改它。因为您在命名空间
A
中,那么B.C
实际上将是A.B.C
使用global::
指定从根目录查看:
using global::B.C;
B.C与A.B.C冲突。您需要将B.C重命名为其他名称,或使用
global
指定它。可能B.C
命名空间在命名空间A.B.C
范围内时,命名空间被错误地计算为A.B.C
?当处于全局范围时,它不知道任何名称空间,因此首先在A
(A.B
)中找到B
,而不是假设B
)。值得注意的是,这不仅在using语句中,而且在任何地方都可以逃离名称空间地狱。(例如,新的全局::MyNS.BlahBlah())