C#实例化具有反射类型信息的通用列表

时间:2009-11-10 23:06:44

标签: linq generics reflection

我正在尝试执行以下操作:

  1. 在使用各种EntitySet<>反映LINQ-to-SQL对象之后给定TypeInfo。子集合,检索集合
  2. 对集合进行一些操作
  3. 下面的代码显然没有编译 - 只是寻找另一种方法来执行此操作[注意,“Facade”是有问题的L2S对象)。不编译的东西是“itemType”的用法,因为它是一个变量,而不是类型名称,但是你明白了这个想法:

    //itemType is the reflected Type of child object
    
    EntitySet<itemType> list = (EntitySet<itemType>)type.InvokeMember(
                                           info.Name,
                                           BindingFlags.GetProperty,
                                           null,
                                           Facade,
                                           null);
    
    
    foreach (itemType o in list)
        //do something with o
    

    我提出的最接近的欺骗是here,但没有最终解决方案。

    提前感谢任何想法。

1 个答案:

答案 0 :(得分:0)

好的,这有效:

var list = type.InvokeMember(
                             info.Name,
                             BindingFlags.GetProperty,
                             null,
                             Facade,
                             null);

IEnumerable e = list as IEnumerable;

if (e == null)
    continue;

foreach (object o in e)
    //do stuff with o