2009-04-17 92 views
5

Tôi đang cố gắng xuất một biểu đồ đối tượng qua phản chiếu. Trong đó có một số loại chung chung (danh sách, từ điển). Tôi không biết các loại (chuỗi, đối tượng, vv) mà chúng chứa nhưng muốn liệt kê chúng (sử dụng. ToString()).Danh sách chung/Từ điển

Vì vậy, có cách nào để xuất danh sách chung/từ điển theo cách chung chung, điều đó có nghĩa là không viết chức năng quá tải cho mỗi khóa kết hợp giá trị < ->?

Tôi nghĩ rằng nó sẽ có thể với .NET 4.0, nhưng đó là hiện chưa ở đây ..

+0

@ Brian - thực sự, không phải. –

+0

Tôi tự hỏi nếu từ khóa var có thể giúp với điều này. Tôi nghi ngờ là không. – Brian

Trả lời

4

Nếu bạn đang sử dụng phản chiếu, Generics được rất khéo léo. Bạn có thể sử dụng giao diện không chung chung không? IDictionary/IList? Nó sẽ là một nhiều dễ dàng hơn ... cái gì đó như:

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

Một trường hợp tư duy cổ điển quá phức tạp. Một danh sách chung có thể gán cho IList, vì vậy tôi chỉ cần tìm ra nếu đó là danh sách hoặc từ điển. Cảm ơn. – Sascha

+0

Thực ra, không được tự động chuyển đổi; không đúng là IList : IList, không phải là IDictionary : IDictionary - nhưng hầu hết các triển khai đều cung cấp cả hai. –

Các vấn đề liên quan