Чтение свойств объекта с помощью деревьев выражений

Я хочу создать лямбда-выражение для каждого свойства объекта, которое читает значение динамически.

Что у меня так далеко:

var properties = typeof (TType).GetProperties().Where(p => p.CanRead);

foreach (var propertyInfo in properties)
{
    var getterMethodInfo = propertyInfo.GetGetMethod();

    var entity = Expression.Parameter(typeof (TType));

    var getterCall = Expression.Call(entity, getterMethodInfo);

    var lambda = Expression.Lambda(getterCall, entity);
    var expression = (Expression<Func<TType, "TypeOfProperty">>) lambda;
    var functionThatGetsValue = expression.Compile();
}

Код хорошо работает, когда я звонюfunctionThatGetsValue до тех пор, пока "TypeOfProperty" жестко закодирован. Я знаю, что не могу передать «TypeOfPoperty» динамически. Что я могу сделать, чтобы достичь своей цели?

Ответы на вопрос(3)

Ваш ответ на вопрос