2009-04-17 6 views
5

리플렉션을 통해 개체 그래프를 출력하려고합니다. 여기에는 몇 가지 일반적인 유형 (목록, 사전)이 있습니다. 나는 그들이 포함하는 유형 (문자열, 객체 등)을 모르지만 그것들을 나열하고자한다 (.ToString()을 사용하여).일반 목록/사전

일반적인 목록/사전을 일반적인 방법으로 출력 할 수 있습니까? 즉, 각 키에 오버로드 된 함수를 쓰지 않고 < - 값 조합을 의미합니까?

가 나는 .NET 4.0 가능할 것이라고 생각하지만, 그건 당신이 반사를 사용하는 경우, 제네릭은 매우 까다로운 도착

+0

@ 브라이언 - 사실,하지. –

+0

var 키워드가 도움이 될지 궁금합니다. 나는 의심하지 않는다. – Brian

답변

4

.. 아직 여기에 현재 아닙니다. 비 제네릭 인터페이스를 간단하게 사용할 수 있습니까? IDictionary/IList? 그것은 일 것 많은 쉽게 ... 뭔가 같은 :

static void Write(object obj) { 
    if (obj == null) { } 
    else if (obj is IDictionary) { Write((IDictionary)obj); } 
    else if (obj is IList) { Write((IList)obj); } 
    else { Console.WriteLine(obj); } 
} 
static void Write(IList data) { 
    foreach (object obj in data) { 
     Console.WriteLine(obj); 
    } 
} 
static void Write(IDictionary data) { 
    foreach (DictionaryEntry entry in data) { 
     Console.WriteLine(entry.Key + "=" + entry.Value); 
    } 
} 
+0

너무 복잡한 사고의 고전적인 사례. 일반 목록은 IList에 할당 할 수 있으므로 목록인지 사전인지 알아야합니다. 감사. – Sascha

+0

실제로 어느 것도 자동으로 변환 할 수 없습니다. 그것은 사실이 아니다. IList : IList, IDictionary : IDictionary - 그러나 대부분의 구현체는 둘 다 제공한다. –