如何访问嵌套的名称空间,以避免完全符合.NET的要求

时间:2019-05-08 15:32:33

标签: c# .net namespaces

我感觉这里缺少明显的东西,但是这个问题困扰了我一段时间。

我在几个不同的嵌套名称空间中定义了一些类:

namespace Awesome.Example {

    namespace V1 {
        public class PopTart {
            public bool PoppinUp {get; set;}
            public bool Hot {get; set;}
        }
    }

    namespace V2 {
        public class PopTart {
            public bool PoppinUp {get; set;}
            public bool SoCool {get; set;}
            public bool AreHot {get; set;}
        }
    }

}

但是,如果我尝试使用include简化声明,则IDE(VS)会抱怨我需要完全限定类。

例如:

using Awesome.Example;

public class Main {

    public V1.PopTart {get; set;}
    public V2.PopTart {get; set;}

}

这会产生两个错误:

The type or namespace name 'V1' could not be found (are you missing a using directive or an assembly reference?)
The type or namespace name 'V2' could not be found (are you missing a using directive or an assembly reference?)

我不明白为什么会这样。谁能解释如何实现我的追求?

2 个答案:

答案 0 :(得分:3)

尝试像这样使用名称空间别名:

using V1 = Awesome.Example.V1;
using V2 = Awesome.Example.V2;

public class Main
{
    public V1.PopTart p1 { get; set; }
    public V2.PopTart p2 { get; set; }

}

或者像这样完全限定您的名称空间:

public class Main
{
    public Awesome.Example.V1.PopTart p1 { get; set; }
    public Awesome.Example.V2.PopTart p2 { get; set; }
}

有关更多说明和示例,请参考以下问题:Nested namespaces

答案 1 :(得分:0)

尝试将完整的名称空间与嵌套名称空间一起使用

public class Main
{
    public Awesome.Example.V1.PopTart var1{get; set;}
    public Awesome.Example.V2.PopTart var2{get; set;}
}