代码之家  ›  专栏  ›  技术社区  ›  Sascha

通用列表/字典

  •  5
  • Sascha  · 技术社区  · 16 年前

    我试图通过反射输出一个对象图。其中有几个通用类型(列表、字典)。我不知道它们包含的类型(字符串、对象等),但想列出它们(使用.toString())。

    那么,是否有一种以通用方式输出通用列表/字典的方法,也就是说,不必为每个键编写重载函数<->值组合?

    我认为.NET 4.0是可能的,但目前还没有。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Marc Gravell    16 年前

    如果使用反射,泛型会变得非常复杂。你能简单地使用非通用接口吗? 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);
        }
    }