【问题标题】:Getting List of Objects by a type given by a string通过字符串给出的类型获取对象列表
【发布时间】:2012-11-07 11:38:24
【问题描述】:

我通过

获取对象
IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);        

我怎样才能得到List 类型由字符串给出的对象?

Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work

【问题讨论】:

    标签: c# entity-framework generics types


    【解决方案1】:

    您尝试做的事情不能静态完成:var 对应于表达式的 static 类型,而右侧表达式的类型显然是非静态的(它是 @ 987654322@,其中T在运行前未知)。

    但是,这是合法的:

    var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v));
    

    这将产生一个IEnumerable&lt;ObjectStateEntry&gt;

    【讨论】:

    • 注意,这将返回完全匹配以及项目是“typ”基类的匹配项。
    • @JustinHarvey 对,OfType&lt;T&gt; 也是这样。
    【解决方案2】:

    怎么样

    Type typ = Type.GetType("mytype");
    var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ);
    

    请注意,他将返回类型完全匹配的匹配项(而不是在同一继承树中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2015-03-24
      • 2019-09-06
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多