我想到了一个带变量的枚举。就像具有特定值的类的预制对象一样。我想出了这个:
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;
}
}
现在我可以从其他类访问预定义的对象。
它有特殊名称吗?它是如何运作的?有没有更好的方法呢?
我很好奇,也很感激帮助。
答案 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