2016-10-09 2 views
0

개체의 이름과 값을 지정하면 비트의 텍스트 이름을 반환하는 함수를 작성했습니다. 이 비트 이름은 다양한 enum에 정의됩니다. 여기 내 기능의 본질입니다.나중에 캐스팅 할 변수에 열거 형을 배치 할 수 있습니까?

string BitName(string object_name, long bit_value) { 

    string bit_name="";  

    switch(object_name) { 
    case "STATUS_WORD" : 
     bit_name = ((eStatusWord)bit_value).ToString(); 
     break; 
    case "TRAJ_STATUS" : 
     bit_name = ((eTrajectoryStatus)bit_value).ToString(); 
     break; 
    } 
    return bit_name; 
} 

이 간단한 접근 방식이 효과적 이었지만 지금은 많은 복제 된 코드를 생성하는 더 많은 작업이 있습니다.

최소한 열거 형을 변수에 넣고이를 캐스팅에 사용하고 싶습니다. 다음과 같은 것 :

Type my_type = eStatusWord;   
    bit_name = ((my_type)bit_value).ToString(); 
    // addition actions that are type dependent 

가능하면 사전이 switch 문을 대체 할 수 있습니다.

+0

을 사전'으로 '예를 들어,'Convert.ChangeType()'을 사용할 수 있습니다. –

답변

1

Enum.ToObject을 사용하면 형식을 알면 열거 형을 동적으로 재구성 할 수 있습니다.

이 거기에서, 당신이 열거 형의 문자열을 매핑 할 Dictionary<string, Type를 사용하여 값을 재구성 할 수 있습니다 사전을 채우려면

bit_name = Enum.ToObject(dictionary[object_name], bit_value).ToString(); 

typeof 사용

dictionary.Add("STATUS_WORD", typeof(eStatusWord)); 
관련 문제