c# – IQueryable OfType其中T是运行时类型

我需要能够得到类似于以下工作的东西:

Type type = ??? // something decided at runtime with .GetType or typeof;
object[] entityList = context.Resources.OfType<type>().ToList();

这可能吗?我可以使用.NET 4,如果任何新的,允许这一点。

你可以通过反射来调用它:

MethodInfo method = typeof(Queryable).GetMethod("OfType");
MethodInfo generic = method.MakeGenericMethod(new Type[]{ type });
// Use .NET 4 covariance
var result = (IEnumerable<object>) generic.Invoke
      (null, new object[] { context.Resources });
object[] array = result.ToArray();

一个替代方案是编写自己的OfTypeAndToArray通用方法来做它的两个位,但上面的工作。

http://stackoverflow.com/questions/3669760/iqueryable-oftypet-where-t-is-a-runtime-type

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – IQueryable OfType其中T是运行时类型