在基类中创建枚举的别名

时间:2019-05-25 21:23:18

标签: c# enums alias

可以说,我有枚举:

MyNameSpace.MyLongEnumName { Green, Red }

如何在基类(即a)中创建该枚举的简写,以便可以在派生类(例如b)中轻松使用它?

first.cs

namespace Foo
{
    public class a
    {
        // phseudo-code,like:  
        using xx = MyNameSpace.MyLongEnumName;
    }  
}

second.cs

namespace Foo
{
    public class b : a
    {
        // phseudo-code,like: 
        xx myProperty = xx.Green;
    }  
}

p.s。这里的主要目的是避免在派生类的using ...文件的顶部使用.cs

1 个答案:

答案 0 :(得分:0)

我不确定您要实现什么目标。

例如

namespace MyCompany.MyProduct.MyServices.MyColorService.Enums
{
    public enum Color
    {
        Green,
        Red
    }
}

现在我们要使用它:

using MyCompany.MyProduct.MyServices.MyColorService.Enums;

public class Foo
{
    public void Bar()
    {
        var currentColor = Color.Green;
    }
}

将此与以下内容进行比较:

public class Foo
{
    public void Bar()
    {
        var currentXx = xx.Green;
    }
}
  • 在第一个示例中,我立即看到它是一种颜色。绿色的。我也立即看到,这是我们自定义的颜色,而不是System.Drawing中的颜色。
  • 在第二个示例中,我仅知道是green中的某个xx?是绿色士兵吗?它对环境友好吗?

无论您想做什么,都会使事情变得更糟。

  

此处的主要目的是避免在派生类的.cs文件顶部使用using xx = MyNameSpace.MyLongEnumName;

这不是名称空间的工作方式。确保有命名空间,并且与其他库没有命名冲突。它们在这里,以确保您使用的是您真正想要的类型。这就是为什么派生类还具有自己的名称空间的原因。

或者换句话说:不可能实现的目标。即使有可能,也可能使情况变得更糟!

Tldr:请确保您组织了代码。在太冗长的名称和太简单的名称之间取得平衡。


除此之外,写Color,将光标放在其上,然后按 ctrl + ,然后按 enter 。如果名称不明确,您会注意到Visual Studio will automaticaly imports for you the namespace, 或提供一个列表。 我们还有Resharper之类的工具,它们在使用intellisense时导入名称空间;)