Verwenden von C# Ist es möglich, Eigenschaften für jedes Enum-Objekt zu verwenden?Ist es möglich, dem C# enum-Objekt benutzerdefinierte Eigenschaften hinzuzufügen?
Ich habe die Description Attribute verwendet, um englische Beschreibung zu einem enum
Element hinzuzufügen.
Hinzufügen zu jedem Element englische Ich habe folgendes getan
public enum MyEnum
{
[Description("My First Item")]
First,
[Description("My Second Item")]
Second,
[Description("My Third Item")]
Third
}
Dann GetDescription()
eine Erweiterungsmethode zu meinem enum
rief ich hinzugefügt, die mir die Beschreibung wie so
public static string GetDescription(this Enum value)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name != null)
{
FieldInfo field = type.GetField(name);
if (field != null)
{
DescriptionAttribute attr = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return name;
}
erhalten können
Allerdings wird es mir sehr helfen, wenn ich eine Klasse zuweisen oder ein neues Objekt konstruieren kann.
Ist es möglich/Wie kann ich etwas wie das Folgende tun?
public enum MyEnum
{
[Description("My First Item"), new { IsFirst = true, UnitType = 1}]
First
}
oder eine Klasse mit für diese
public enum MyEnum
{
[Description("My First Item"), new MyCustomClass(true, 1)]
First
}
Sie können [Ihre eigene benutzerdefinierte Attributklasse erstellen] (https://docs.microsoft.com/en-us/dotnet/standard/attributes/writing-custom-attributes). – Leandro
An diesem Punkt, sollten Sie nicht einfach Polymorphie anstelle von Enums verwenden? –
Enum's sind im Wesentlichen ganze Zahlen und Sie möchten ein int, eine Zeichenfolge und eine Klasse speichern, verwenden Sie ein 'Tuple tuple = neues Tuple (1," Erstes Element ", neue MyCustomClass (richtig, 1)); ' –