2014-11-22 6 views
3

Я делаю конвертер "error code to String", который будет отображать имя кода ошибки из его значения, например 0x000000c3 даст "Class not found", но используя МОИ СОБСТВЕННЫЕ коды ошибок!C# Найти переменную по значению

Вот как это выглядит на самом деле, как:

#region errcodes 
    public int NORMAL_STOP  = 0x00000000; 
    public int LIB_BROKEN  = 0x000000a1; 
    public int RESOURCE_MISSING = 0x000000a2; 
    public int METHOD_NOT_FOUND = 0x000000a3; 
    public int FRAMEWORK_ERROR = 0x000000b1; 
    public int UNKNOWN   = 0x000000ff; 
#endregion 
    public string getName(int CODE) 
    { 

    } 

Я хотел бы получить string значение из параметра CODE, в функции getName.

Как я могу это сделать?

+4

Вы изучали использование перечисления? –

+0

C# не C, C++ или Java: не используйте идентификаторы 'UPPER_CASE'. Если вы используете 'enum', вы можете получить идентификатор значения перечисления просто путем вызова' .ToString() ', хотя для локализации я предлагаю вам использовать функциональность« Ресурсы »и использовать перечисление в качестве ключа. – Dai

+0

@ LasseV.Karlsen Таким образом, индекс значения совпадает с кодом ошибки! Благодаря ! – Thesola10

ответ

6

Хороший C# практика использования перечисления:

public enum ErrorCode 
{ 
    NORMAL_STOP  = 0x00000000, 
    LIB_BROKEN  = 0x000000a1, 
    RESOURCE_MISSING = 0x000000a2, 
    METHOD_NOT_FOUND = 0x000000a3, 
    FRAMEWORK_ERROR = 0x000000b1, 
    UNKNOWN   = 0x000000ff 
} 

public const string InvalidErrorCodeMessage = "Class not found"; 

public static string GetName(ErrorCode code) 
{ 
    var isExist = Enum.IsDefined(typeof(ErrorCode), code); 
    return isExist ? code.ToString() : InvalidErrorCodeMessage; 
} 

public static string GetName(int code) 
{ 
    return GetName((ErrorCode)code); 
} 

Еще один хороший совет: было бы здорово использовать соглашение C# именовании для кодов ошибок:

public enum ErrorCode 
{ 
    NormalStop  = 0x00000000, 
    LibBroken  = 0x000000a1, 
    ResourceMissing = 0x000000a2, 
    MethodNotFound = 0x000000a3, 
    FrameworkError = 0x000000b1, 
    Unknown   = 0x000000ff 
} 

Пример использования:

void Main() 
{ 
    Console.WriteLine(GetName(0)); // NormalStop 
    Console.WriteLine(GetName(1)); // Class not found 
    Console.WriteLine(GetName(ErrorCode.Unknown)); // Unknown 
} 
+1

Это не полностью отвечает на вопрос. OP хочет знать, как получить имя ErrorCode Enum из назначенного значения. EG, как получить NormalStop от 0x00 ...... –

+1

@DarrenYoung, метод GetName возвращает имя данного кода. – AndreyAkinshin

+0

Насколько я понимаю, OP хочет передать строку, такую ​​как «0x000 ...», и вернуть код ErrorCode, например NormalStop. Взято из вопроса «например, 0x000000c3 даст« Класс не найден » –

Смежные вопросы