簡體   English   中英

獲取枚舉的全名 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM