c# - 如何在调试中访问根命名空间

标签 c# visual-studio debugging namespaces breakpoints

当我们位于名称重复的命名空间内时,如何在调试中访问根命名空间?

例如:

根命名空间: 项目

捕获断点的命名空间: 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 { }
        }
    }
}

观看窗口:

watch window

只能访问嵌套的 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/

相关文章:

c# - .Net 4.0 在使用 Attributes.Add 时编码单引号

c# - 从列表中获取唯一项

c# - FakeItEasy 伪造带有构造函数中参数的自定义属性的抽象类抛出 ArgumentException

c++ - 如何通过 Visual Studio 使用更多 CPU

c++ - 使用 Visual Studio 11 编译的可执行文件有什么特别之处,导致无法在 Windows XP 上执行这些可执行文件?

c# - 使用不同的配置调试同一项目的 2 个以上实例

c# - 从哪里了解 VS 调试器 'magic names'

C# 套接字消息解压

android - 如何在 Eclipse 中调试时终止 Android 应用程序

ios - 在连接到 Xcode 的 iOS 设备上运行时写入 Mac 上的文件