当我们位于名称重复的命名空间内时,如何在调试中访问根命名空间?
例如:
根命名空间: 项目
捕获断点的命名空间: Project.Models.Project(注意重复的 Project 段)。
代码:
using Project.Models.Project;
namespace Project
{
class Program
{
static void Main(string[] args)
{
new Foo().Bar();
}
}
namespace Models
{
namespace Project
{
public class Foo
{
public void Bar()
{
//breakpoint! in this moment I want to access to Bar class (there is no `using Project.Models.Issue;` above)
//var boo = new Boo(); Cannot resolve symbol 'Boo'
}
}
}
namespace Issue
{
public class Boo { }
}
}
}
观看窗口:
只能访问嵌套的 Project 命名空间 (Project.Models.Project),但我无法访问具有相同名称和名称的根命名空间转到Project.Models.Issues.Boo。
有什么想法吗?
最佳答案
您可以使用全局命名空间别名 (global::
) 来指示您要从根命名空间开始:
var boo = new global::Project.Models.Issues.Boo()
正如 @rory.ap 正确指出的那样,在这种情况下,您可以不使用全局 namespace 别名,但有时这是您唯一的选择。考虑这个例子:
namespace Foo {
class Bar {}
namespace Bat {
namespace Foo {
class Bar {}
}
static class Test {
public static void AccessNS() {
//The global:: alias is necessary here to avoid a creating a Foo.Bat.Foo.Bar()
var fooBar = new global::Foo.Bar();
}
}
}
}
关于c# - 如何在调试中访问根命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42508447/