标题基本上都说明了一切。我正在实现一些分析表达式的逻辑,并在这里和那里使用反射。要检索以Expression<Func<T, S>>
作为参数的特定泛型方法的重载,我使用typeof
运算符来获取此参数的正确开放泛型类型:
typeof(Expression<Func<,>>)
据我了解,使用typeof
运算符可用于获取开放泛型类型。但是,在这种情况下,编译器会抱怨它错过了Func<,>
委托中的类型信息:
Type expected
这是按规格吗?如果是这样,如何在这里获得正确的类型?我正在使用 Visual Studio 2013 Update 4 / C#5 。
答案 0 :(得分:1)
使用typeof
,您可以获得有关开放泛型类型或关闭类型的类型信息。您不能将typeof
与两者混合使用。
Expression<>
是一个开放类型,但是指定Func<,>
的类型参数会尝试引用一个封闭类型,这就是为什么编译器希望您指定Func<,>
的类型参数的原因
只需使用typeof(Expression<>)
,这是您需要的开放式。