C#编译器使用typeof(表达式<;函数<;,>;>;)时出错
本文关键字:gt lt 出错 函数 编译器 表达式 typeof | 更新日期: 2023-09-27 18:21:52
Title基本上说明了一切。我正在实现一些逻辑,分析表达式并在这里和那里使用反射。为了检索以Expression<Func<T, S>>
为参数的特定泛型方法的重载,我使用typeof
运算符来获得该参数的正确开放泛型类型:
typeof(Expression<Func<,>>)
据我所知,使用typeof
运算符可以获得开放的泛型类型。然而,在这种情况下,编译器会抱怨它错过了Func<,>
委托的类型信息:
Type expected
这是按规格吗?如果是,如何在这里获得正确的类型?我正在使用Visual Studio 2013更新4/C#5。
使用typeof
,您可以获得关于开放泛型类型或闭合类型的类型信息。不能将typeof
与两者混合使用。
Expression<>
是一个开放类型,但指定Func<,>
的类型参数会试图引用一个封闭类型,这就是为什么编译器希望您也指定Func<,>
的类型参数。
只需使用typeof(Expression<>)
,这就是您需要的开放型。