[英]Get full name of the enum C#
示例代碼:
public enum FruitTypeIs
{
Orange,
Mango,
Banana
}
public void WriteFruitType(FruitTypeIs fruitType)
{
string fruitTypeIs = typeof(FruitTypeIs) + "." + fruitType.ToString(); // -> FruitTypeIs.Mango
Console.WriteLine($"{fruitTypeIs}");
}
在上面的示例代碼中,我想打印接收到的枚舉值和枚舉類型。 例如,如果我收到Mango
作為參數FruitTypeIs fruitType
的值,那么我想打印完整值FruitTypeIs.Mango
。 由於新的 Fruit 類型可以添加到枚舉中,所以我不能有 if/switch 語句。
作為解決方法,我可以使用語句string fruitTypeIs = typeof(FruitTypeIs) + "." + fruitType.ToString();
string fruitTypeIs = typeof(FruitTypeIs) + "." + fruitType.ToString();
,這工作正常,但有更好的方法嗎?
我建議實現一個通用方法
// static - we don't need instance (this) here
// generic - T - suits for any Enum, not necessary FruitTypeIs
public static string FullEnumName<T>(T value) where T : Enum =>
$"{typeof(T).Name}.{Enum.GetName(typeof(T), value)}";
用法:
var value = FruitTypeIs.Mango;
...
Console.Write(FullEnumName(value));
您可以將其實現為擴展方法,例如
public static class EnumExtensions {
public static string FullEnumName<T>(this T value) where T : Enum =>
$"{value.GetType().Name}.{Enum.GetName(typeof(T), value)}";
}
然后把它
Console.Write(FruitTypeIs.Mango.FullEnumName());
您可以嘗試擴展,為Enum
添加擴展
public static class EnumExtension
{
public static string GetFullType(this Enum e) => $"{e.GetType().Name}.{e}";
}
然后你可以在你的代碼中使用它
Console.WriteLine(FruitTypeIs.Banana.GetFullType());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.