使用 typeof(Expression<Func<,>>) 的 C# 编译器错误

C# Compiler Error using typeof(Expression<Func<,>>)

标题基本上说明了一切。我正在实现一些分析表达式并在这里和那里使用反射的逻辑。为了检索以 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<>),这就是你需要的开放式