使用typeof的C#编译器错误(表达式<func <,>&gt;)

时间:2015-11-13 13:57:05

标签: c# compiler-errors typeof

标题基本上都说明了一切。我正在实现一些分析表达式的逻辑,并在这里和那里使用反射。要检索以Expression<Func<T, S>>作为参数的特定泛型方法的重载,我使用typeof运算符来获取此参数的正确开放泛型类型:

typeof(Expression<Func<,>>)

据我了解,使用typeof运算符可用于获取开放泛型类型。但是,在这种情况下,编译器会抱怨它错过了Func<,>委托中的类型信息:

Type expected

这是按规格吗?如果是这样,如何在这里获得正确的类型?我正在使用 Visual Studio 2013 Update 4 / C#5

1 个答案:

答案 0 :(得分:1)

使用typeof,您可以获得有关开放泛型类型或关闭类型的类型信息。您不能将typeof与两者混合使用。

Expression<>是一个开放类型,但是指定Func<,>的类型参数会尝试引用一个封闭类型,这就是为什么编译器希望您指定Func<,>的类型参数的原因

只需使用typeof(Expression<>),这是您需要的开放式。