如何使用变量泛型将对象强制转换为EntitySet

时间:2016-10-17 16:34:32

标签: c# linq reflection linq-to-sql casting

我有一个名为o的变量(类型:object)。我还有一个名为t的变量(类型:Type)。我知道o是EntitySet,其类型为t,其中包含一个条目。

我需要获取EntitySet中的第一个元素,以便我可以使用反射来获得它的属性。尝试了几种获取第一个元素的方法,但没有一个方法有效。

  1. 投射到EntitySet - 听起来不错但不知道如何做这个,因为t是一个可以改变的变量
  2. 将o投射到动态
  3. 将o转换为EntitySet - 意图是我可以使用EntitySet的方法获取第一个对象,但它会引发异常
  4. 有:

    Type t;    
    object o; // we know it's EntitySet<t>
    

    我需要

    t firstElement = o[0];
    

1 个答案:

答案 0 :(得分:0)

您应该能够将其转换为IEnumerable<object>,因为IEnumerable<T>是协变的。 IList不会工作。

Type t;    
object o;
var objList = (IEnumerable<object>)o;
var firstObject = objList.First();
//Do your reflection magic with firstObject