2012-08-15 2 views
1

열거 형의 문자열 표현이 있습니다.반영된 문자열 표현에서 열거 형의 값 (필드)을 가져옵니다.

string val = "namespace_name.enum_name"; 

이 형식을 사용하여 열거 형을 가져올 수 있습니다.

Type myType = Type.GetType(val); 

이제 myType.Name = actual_enum_name 및 기타 정보를 참조하십시오. 이 정보를 사용하여 실제 enum 값을 얻으려고 시도했지만 성공하지 못했습니다.

Enum.Getvalues를 사용하여 시도했지만, System.Type 인 myType을 Enum.Getvalues에 필요한 (?) EnumType으로 변환하지 못했습니다.

정보를 기반으로 실제로 열거 형 개체를 만들려고했으나 막혔습니다.

여기에서 해당 열거 형의 실제 필드 (멤버 목록)를 어떻게 가져올 수 있습니까?

+0

Enum.TryParse를 사용하여 시도 했습니까 – HatSoft

+0

언제 당신은 당신이 "변환 myType을 붙어있어"당신이 그것을 변환하려고하는 말? – CodingGorilla

+0

컴파일러에 오류가 있습니까? –

답변

5

변환 할 필요없이 그대로 작동해야합니다. Enum.GetValues()Type입니다. 아래 코드가 작동합니다.

namespace enumtest 
{ 
    public enum Mine 
    { 
     data1, 
     data2 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      Type myenum = Type.GetType("enumtest.Mine"); 

      foreach (var curr in Enum.GetValues(myenum)) 
      { 
       Console.WriteLine(curr.ToString()); 
      } 
     } 
    } 
} 

이는이 같은 열거 값의 인스턴스를 생성 할 수 있습니다 :

namespace enumtest 
{ 
    public enum Mine 
    { 
     data1, 
     data2 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      Type myenum = Type.GetType("enumtest.Mine"); 

      // Let's create an instance now 
      var values = Enum.GetValues(myenum); 
      var firstValue = values.GetValue(0); 
      Mine enumInstance = (Mine)Enum.Parse(myenum, firstValue.ToString()); 

      Console.WriteLine("I have an instance of the enum! {0}", enumInstance); 
     } 
    } 
} 
0

가정하자 나는이 열거 ContactNumberType 다음 값이 GetValues() 방법이를 반환

string[] names = Enum.GetValues(typeof(ContactNumberType)); 

때문에 사용 얻을 수 있습니다 배열

관련 문제