将反射特性链接到变量



是否可以将反射属性链接到变量?只是为了更好的代码。

var xxx = results.Where(r => r.GetType().GetProperty(levelName).GetValue(r, null) == node.Name)

有可能转换成那样的东西吗?

var myReflectedProp = r.GetType().GetProperty(levelName).GetValue(r, null);
var myReflectedProp2 = r.GetType().GetProperty(levelName2).GetValue(r, null);
var xxx = results.Where(r => myReflectedProp && r => myReflectedProp2)

干杯

是的,如果您只是手动创建表达式树,这是可能的。

var myReflectedPropParameter = Expression.Parameter(typeof(YourType));
var myReflectedProp = Expression.Lambda<Func<YourType, bool>>
    (Expression.MakeMemberAccess(myReflectedPropParameter, typeof(YourType).GetProperty(levelName)), myReflectedPropParameter);
var xxx = results.Where(myReflectedProp);

当然,您需要向System.Linq.Expressions添加一个using语句。

相关内容

  • 没有找到相关文章

最新更新