Dynamic MemberExpression

Я хочу создать MemberExpression, зная только имя поля; например:

public static Expression<Func<TModel, T>> GenerateMemberExpression<TModel, T>(string fieldName)
    {
        PropertyInfo fieldPropertyInfo;

        fieldPropertyInfo = typeof(TModel).GetProperty(fieldName);

        var entityParam = Expression.Parameter(typeof(TModel), "e"); // {e}
        var columnExpr = Expression.MakeMemberAccess(entityParam, fieldPropertyInfo); // {e.fieldName}
        var lambda = Expression.Lambda(columnExpr, entityParam) as Expression<Func<TModel, T>>; // {e => e.column}

        return lambda;
    }

Проблема с вышеизложенным состоит в том, что тип поля должен быть строго типизированным. Передача «объекта» в качестве типа поля не работает. Есть ли способ создать это? Даже Dynamic LINQ не работает.

9
задан Ani 16 March 2011 в 06:44
поделиться