如何将字符串中的类型直接加载到C#中的linq表达式?

时间:2010-04-06 12:06:33

标签: c# linq string lambda types

这是定义:

public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source);

如何用以下内容替换TResult:

Type.GetType("MyClass from assembly");

2 个答案:

答案 0 :(得分:4)

你做不到。通用参数在编译时强制执行类型安全性,而Type.GetType使用反射,并且在编译时不知道。你究竟想要实现什么目标?

答案 1 :(得分:3)

如果您不知道所涉及的类型,则无法在编译时执行此操作,但您可以为IEnumerable编写自己的扩展方法:

public static IEnumerable OfType(this IEnumerable source, Type t)
{
    foreach(object o in source)
    {
        if(t.IsAssignableFrom(o.GetType()))
            yield return o;
    }
}