2016-10-03 297 views
2

我宣佈我的項目中的所有類和命名空間之外以下枚舉:如何覆蓋C#中枚舉的ToString()?

public enum ServerType { Database, Web } // there are more but omitted for brevity

我想要的東西,如覆蓋ToString()方法:

public override string ToString(ServerType ServerType) 
{ 
    switch (ServerType) 
    { 
     case ServerType.Database: 
      return "Database server"; 
     case ServerType.Web: 
      return "Web server"; 
    } 
    // other ones, just use the base method 
    return ServerType.ToString(); 
} 

不過,我得到一個錯誤no suitable method found to override

使用我自己的方法轉換爲字符串時,是否可以重寫枚舉?

+0

使您的方法擴展 - 公共靜態字符串ToMyString(此ServerType ServerType)'。然後使用它'_serverTypevariable.ToMyString();' – Fabio

+0

https://social.msdn.microsoft.com/Forums/vstudio/en-US/54b4e56e-f062-4b8b-aac6-30e8b04e8720/overriding-tostring-method-for- enumerations-in-c?forum = csharpgeneral – MethodMan

+1

已經在這裏回答了http://stackoverflow.com/questions/479410/enum-tostring-with-user-friendly-strings – hjgraca

回答

-1

您可以定義一個靜態類,然後使用它。 當您創建此靜態類並引用您的項目時,可以在所有字符串變量中看到擴展的ToString()方法。這是擴展變量的一種簡單方法。您可以使用它作爲其他選項;)

public static class Extenders 
    { 
     public static string ToString(this string text, ServerType ServerType) 
     { 
      switch (ServerType) 
      { 
       case ServerType.Database: 
        return "Database server"; 
       case ServerType.Web: 
        return "Web server"; 
      } 
      // other ones, just use the base method 
      return ServerType.ToString(); 
     } 
    } 

使用它像下面;

"Merhaba".ToString(ServerType.Database);