首页 > 解决方案 > C#:在 Generic 中传递动态类型会出错 targetType is a variable but is used like a type

问题描述

Type propertyType = nestedProperty.PropertyType;

var targetType = IsNullableType(propertyType) ? 
     Nullable.GetUnderlyingType(propertyType) : propertyType;

GetPredicateTemp'<'T , targetType> ("storage");

这里在传递 targetType 时给出错误 targetType 是一个变量,但用作类型。targettype 返回 Int64 我如何传递这种类型,我只需要返回这种类型的 lambda 表达式。

我的问题不同..这里看方法,我需要传递两种类型 T1,T2 ..代替T2,想传递targetType

~ 公共静态表达式<Func<T1, T2>> GetPredicateTemp<T1, T2>(string propName)where T1 : UserEntity {

        string[] props = propName.Split('.');
        Type t1 = typeof(T1);
        PropertyInfo propertyInfo = t1.GetProperty(props[0]);
        PropertyInfo nestedProperty = propertyInfo.PropertyType.GetProperty(props[1]);
        var parameter = Expression.Parameter(typeof(T1), "t");
        MemberExpression expBody = Expression.Property(parameter, propertyInfo.Name);
        expBody = Expression.Property(expBody, nestedProperty.Name);
        var predicateNEW = Expression.Lambda<Func<T1, T2>>(expBody, new ParameterExpression[] { parameter });
        return predicateNEW;
    }

标签: c#genericslambdadynamictypes

解决方案


推荐阅读