【问题标题】:How to cast object to EntitySet with variable generic如何使用变量泛型将对象转换为 EntitySet
【发布时间】:2016-10-17 16:34:32
【问题描述】:

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

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

  1. 将 o 转换为 EntitySet - 听起来不错,但不知道如何将 t 设为可以更改的变量
  2. 将 o 转换为动态
  3. 将 o 转换为 EntitySet - 目的是我可以使用 EntitySet 的方法并获取第一个对象,但它会引发异常

有:

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

我需要

t firstElement = o[0];

【问题讨论】:

  • 您必须提供比这更多的上下文。目前尚不清楚您实际想要完成什么以及为什么。
  • @DavidL 什么不清楚?我重读了一遍,不确定有什么不清楚的地方。
  • 您是否尝试将对象投射到 IList?

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


【解决方案1】:

您应该能够将其转换为 IEnumerable&lt;object&gt;,因为 IEnumerable&lt;T&gt; 是协变的。 IList 不起作用。

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

【讨论】:

  • 我没有看到这里的非通用 IList 有问题。
  • 你是对的。 IList 也可以。 IList 将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
相关资源
最近更新 更多