为什么这个命名空间命名约定不能与我的Enum一起使用?

时间:2013-07-25 21:05:07

标签: c# namespaces

这是我在CPSLibrary类库中存在的Enums.cs文件:

namespace CPSLibrary.CPSEnums
{
    public enum GoalType
    {
        STRATEGIC = 1,
        TACTICAL = 2
    }
}

在引用CPSLibrary的Web应用程序中的代码隐藏文件中,我正在执行以下操作:

using CPSLibrary;

/*  ... farther down the page ... */
proj.Goal == CPSLibrary.CPSEnums.GoalType.STRATEGIC;

这样可行,但如果我尝试像CPSEnums.GoalType.STRATEGIC那样引用它,它就不会。另外,如果我添加“使用CPSLibary.CPSEnums”,我可以将其简单地称为GoalType.STRATEGIC。

我需要做些什么来识别CPSEnums.GoalType.STRATEGIC?

奇怪的是,CPSLibrary类库中的其他类可以将它作为CPSEnums.GoalType.STRATEGIC引用。

奖金问题:在这个例子中,“CPSEnums”是否有技术术语? “容器”或类似的东西?或者它只是命名空间的一部分而没有单独的术语?

TIA

3 个答案:

答案 0 :(得分:4)

尝试将您的using语句更改为此...

using CPSEnums = CPSLibrary.CPSEnums; 

这应该允许你以你想要的方式引用它......

/*  ... farther down the page ... */
proj.Goal == CPSEnums.GoalType.STRATEGIC;

答案 1 :(得分:0)

因为你的命名空间名称是CPSLibrary.CPSEnums,所以你甚至可以这样写:

using CPSLibrary.CPSEnums;
....
proj.Goal == GoalType.STRATEGIC; //NO NAMESPACE NAME

当您编写using CPSLibrary时,您将引用已定义的命名空间的“父”命名空间。这完全有效。但要访问您的枚举类型,您需要指定 namepsace,名称空间为:CPSLibrary.CPSEnums

答案 2 :(得分:0)

试试这个:

namespace CPSLibrary
{
    public static class CPSEnums
    {
        public enum GoalType
        {
            STRATEGIC = 1,
            TACTICAL = 2
        }
    }
}


var x = CPSEnums.GoalType.STRATEGIC;