Tengo un método que acepta una instancia Expression<Func<T, object>>
. Deseo obtener el tipo de datos real devuelto por una instancia de expresión específica, en lugar de object
.Obtenga el tipo de devolución real de una instancia de expresión <Func <T, object>>
Lo puedo hacer funcionar para las referencias de propiedades directas, por lo que si paso la expresión x => x.IntegerProperty
puedo obtener una referencia de tipo para un entero. Este enfoque requiere convertirlo a MemberExpression.
Sin embargo, no puedo hacer que funcione para expresiones arbitrarias. Por ejemplo, si la expresión es x => x.IntegerProperty.ToString()
, quiero obtener una referencia de tipo para una cadena. No puedo compilar esto en MemberExpression, y si solo lo .Compile()
y verifico el tipo de devolución, obtengo "object".
¿Cómo puedo ver la instancia de expresión específica y derivar el tipo de devolución real?
Técnicamente, el tipo de retorno real de la expresión es ... 'object'. Como se requería que la función devolviera 'object', se generaron las expresiones necesarias para garantizar que sea el tipo devuelto (una conversión en este caso). –