c# - 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# - 如何删除 RichTextBox 中每一行的第一个字符
- java - Firestore 遍历文档以查找空字段
- vbscript - 为什么 Dir 在我的脚本中未被识别为方法?
- laravel - hasManyThrough 用于 4 个表
- reactjs - 想要隐藏和显示方法不起作用的不透明度?
- html - 事件绑定、属性绑定和双向数据绑定是否与 DOM 或模板有关?
- angular - 无法删除内容类型标题 angular8
- java - 如何使用 java @Configuration Spring 配置以过滤模式运行球衣
- ios - 了解将 facebook 登录添加到 iOS 应用程序的流程
- python - QComboBox 添加粗体父项