2013-03-21 3 views
-1

목표는 목록과 열거 형을 약간 섞은 것입니다.열거 형과 목록을 혼합하십시오.

예 나는 목록을 만들 때 :

List<string> toto= new List<string>; 
toto.add("test1"); 
toto.add("test2"); 

==>를하지만이 같은 "TEST1"을 호출 할 수 없습니다 : 그것은이 같은 가능성 열거으로

toto.test1 :

public enum toto{ 
test,test2 
} 

하지만 문자열

아이디어의 관점에서 동적 열거를 생성의 수는 없습니다 내 문제 때문에?

당신의 도움에 감사드립니다.

+5

'C# -5.0' 태그를 잊어 버렸습니다 ... –

+2

"내 목표는 목록과 열거 형을 약간 섞은 것입니다." 그러면 목표는 무엇입니까? Listname.itemValue를 사용하여 목록 항목을 호출 할 수 없다는 것이 확실합니다 ... –

+1

사실 동적 인 경우 컴파일러는 정적 유형 지정을 사용할 수 없습니다. 당신이 해결하려고하는이 배후의 문제는 무엇입니까? – Steven

답변

6

당신이 무엇을 하려는지 확실하지 않습니다. 동적으로 개체를 확장하려면 다음을 수행하십시오.

.NET 4.0에서 ExpandoObject을 사용해 보시지 않겠습니까?

dynamic toto = new ExpandoObject(); 
toto.test1 = 10; 
toto.test2 = 300; 
toto.test3 = "Hello"; 
+0

이 방법을 사용하면 "ExpandObject"개체에 test1 & test2 & test3 변수를 만들어야합니다. "문자열"이라는 단어를 사용하여 목록이나 다른 사람을 만들고 싶습니다. – Zoners

+0

@ zoners라는 질문에 대해서는 요소에 대한 액세스가 바람직하지 않습니다.당신이 말하는 다른 언어가 있습니까? 가능하다면 당신을 가리켜줍니다. –

0

당신은 열거 형 멤버로 목록에서 문자열을 번역, 확장 기능을 만들 수 있습니다.

public static MyEnum ToMyEnum(this String myEnumMemberAsString, Boolean ignoreCase = true) 
    { 
     if (String.IsNullOrEmpty(myEnumMemberAsString)) 
      throw new ArgumentException("ToMyEnum: String null or empty!"); 
     return (MyEnum)Enum.Parse(typeof(MyEnum), myEnumMemberAsString, ignoreCase); 
    } 

질문에 목록을 가정 :

public static String GetFromList(this List<String> list, MyEnum elemToGet) 
{ 
    return list.SingleOrDefault(e => e == elemToGet.ToString()); 
} 

다음 통과하지 않고 (예를 String found = list.GetFromList(MyEnum.test2);

+0

List 으로 간단한 예를 만들 수 있습니까? 어떻게 작동하는지 당신의 방법 – Zoners

+0

@ Zoners 내가 오해라고 생각하는지 모르겠다. 편집을 참조하십시오. –

+0

함수가 열거 형에있는 문자열을 반환하기 때문에 문제가 해결되지 않았습니다. 하지만 당신의 이름으로 listElement에 접근하고 싶습니다 ... – Zoners

0

당신은 단지 하나의 방법 내에서 이러한 개체를 사용하려면 위해 할 그 밖의 곳에서는) 익명 형식 (3.0으로 시작)을 사용할 수 있습니다.

var container = new 
        { 
         test1, 
         test2, 
        }; 

var test1Again = container.test1; 

그렇지 않으면 컴파일러가 이러한 용도를 확인할 수 없으므로 동적 개체 만 할 수 있습니다.

관련 문제