表达式树不支持动态泛型类型参数吗?

Doesn't Expression Tree support dynamic generic type parameters?

我想动态创建通用 类。要定义类型参数,您将在 TypeBuilder 上调用 DefineGenericParameters 方法,并且您可以使用 return 值对类型参数添加类型约束。

顺便说一句,我正在使用表达式树发出方法体。但后来我意识到表达式树的 API 不接受 GenericTypeParameterBuilders,即 DefineGenericParameters 方法的 return 值作为参数。
也许您想知道它是否会编译。因为该类型是从 Type 派生的,所以它会编译。但是 Expression Tree 的 API 在运行时抛出异常,告诉我该类型包含 Mono 上的泛型类型参数,并且该方法在 .NET 上不受支持。

所以在我看来,Expression Tree 不能处理泛型类型参数,但事实真的如此吗?我错过了什么吗?
如果是这样,如果您建议使用表达式树处理泛型类型参数的其他方法,我将很高兴。

the method is not supported on .NET.

这个我可以解释一下:

要检查类型是否为枚举,最后 this 行调用:

public override bool IsSubclassOf(Type c)
{
    throw new NotSupportedException();
}

通过 this 行:

 public virtual bool IsEnum {
     get
     {
        return IsSubclassOf(RuntimeType.EnumType);
     }

this 行调用:

internal static ParameterExpression Make(Type type, string name, bool isByRef) {
    if (isByRef) {
        return new ByRefParameterExpression(type, name);
    } else {
        if (!type.IsEnum) {

现在...关于你的问题:没办法。遗憾的是,这两个子系统(Reflection.EmitExpression)并不多 "compatible"。如您所知,不支持使用 LambaExpression.CompileToMethod() 创建实例方法(包括构造函数)。您唯一可以做的就是创建普通(非泛型)静态方法,这些方法不包括在其参数中使用 TypeBuilder 构造的类型。