2016-10-03 5 views
2

ich folgendes Enum haben außerhalb aller Klassen und Namespaces in meinem Projekt erklärt:So überschreiben Sie ToString() für Aufzählung in C#?

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

Ich möchte wie die ToString() Methode mit etwas außer Kraft zu setzen:

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(); 
} 

Jedoch habe ich einen Fehler no suitable method found to override

Ist es möglich, die enum außer Kraft zu setzen, wenn auf String mit meiner eigenen Methode konvertieren?

+0

machen Sie Ihre Methode Erweiterung - 'öffentliche statische Zeichenfolge ToMyString (diese ServerType ServerType)'. Dann nutzen Sie es '_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

bereits beantwortet hier http://stackoverflow.com/questions/479410/enum-tostring-with-user-friendly-strings – hjgraca

Antwort

-1

Sie können eine statische Klasse definieren und dann verwenden. Wenn Sie diese statische Klasse und Referenz auf Ihr Projekt erstellen, können Sie die erweiterte ToString() - Methode in allen String-Variablen sehen. Es ist eine einfache Möglichkeit, Variablen zu erweitern. Sie können es für andere Optionen verwenden;)

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(); 
     } 
    } 

verwenden Sie es wie unten;

"Merhaba".ToString(ServerType.Database); 
Verwandte Themen