如何调用此实现并且它是“正确的”?

时间:2016-03-05 04:53:04

标签: c# enums static

我想到了一个带变量的枚举。就像具有特定值的类的预制对象一样。我想出了这个:

public class myClass {

string name;
int number;

public static myClass Version1 = new myClass("test",1);
public static myClass Version2 = new myClass("notest",2);

public myClass(string name, int number)
{
    this.name = name;
    this.number = number;
}

}

现在我可以从其他类访问预定义的对象。

它有特殊名称吗?它是如何运作的?有没有更好的方法呢?

我很好奇,也很感激帮助。

1 个答案:

答案 0 :(得分:1)

在“有没有更好的方法”的背景下,也许这有用......

我无法确定你想要完成什么,但C#内置了一些丰富的功能。您应该研究下面的内容,了解可能存在的其他模式,并将最好的模式应用到您的项目中。

public enum Versions
{
    Test = 1,
    [Description("No Test!!")]
    NoTest = 2
}

// NOTE: this function taken from http://stackoverflow.com/questions/18625488/alternative-names-for-c-sharp-enum
public static class EnumExtensions
{
    public static string GetDescription(this Enum value)
    {
        FieldInfo fi = value.GetType().GetField(value.ToString());

        if (fi != null)
        {
            DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            return (attributes.Length > 0) ? attributes[0].Description : value.ToString();
        }

        return value.ToString();
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine($"Enum Test has name of {Enum.GetName(typeof(Versions), Versions.Test)} and a value of {(int)Versions.Test}");
        Console.WriteLine($"Enum NoTest has description of {EnumExtensions.GetDescription(Versions.NoTest)} and a value of {(int)Versions.NoTest}");

        return;

产地:

Enum Test has name of Test and a value of 1
Enum NoTest has description of No Test!! and a value of 2