Declarando dinámicamente Func <in T, out Result>

Considera esto:

var propertyinfo = typeof(Customer).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;

ahora quiero declarar

Func<int,orderType>

Sé que no es posible directamente desdeordertype está en tiempo de ejecución pero ¿hay alguna solución?

Esto es exactamente lo que quiero hacer:

var propertyinfo = typeof(T).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;

var param = Expression.Parameter(typeof(T), "x");
var sortExpression = (Expression.Lambda<Func<T, orderType>>
   (Expression.Convert(Expression.Property(param, sortExpressionStr), typeof(orderType)), param));

todo esto porque quiero convertir:

Expression<Func<T,object>> to Expression<Func<T,orderType>>

o si no es posible, entonces quiero crearlo desde el primer lugar con el tipo correcto, el caso es el siguiente:

Estoy dentro de un método que tiene untype(Customer) y un nombre de propiedad de ese tipo que quiero ordenar por él, quiero crear un árbol de expresión de clasificación para pasarloOrderby (aquí).

Respuestas a la pregunta(6)

Su respuesta a la pregunta