2016-10-03 15 views
2

я следующее перечисление объявленного вне всех классов и пространств имен в моем проекте:Как переопределить ToString() для перечисления в C#?

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

сделать расширение вашего метода - 'public static string ToMyString (this 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);