Ho un metodo che accetta un'istanza Expression<Func<T, object>>
. Voglio ottenere il tipo di dati effettivo restituito da un'istanza di espressione specifica, anziché da object
.Ottieni il tipo di ritorno effettivo da un'espressione <Func <T, object>> istanza
Posso farlo funzionare per riferimenti diretti di proprietà, quindi se passo nell'espressione x => x.IntegerProperty
posso ottenere un riferimento Tipo per un numero intero. Questo approccio richiede la sua conversione in MemberExpression.
Tuttavia, non riesco a farlo funzionare per espressioni arbitrarie. Ad esempio, se l'espressione è x => x.IntegerProperty.ToString()
, desidero ottenere un riferimento Tipo per una stringa. Non riesco a compilarlo a un MemberExpression, e se ho solo .Compile()
e controllare il tipo di ritorno ottengo "oggetto".
Come è possibile esaminare l'istanza dell'espressione specifica e derivare il tipo di reso effettivo?
Tecnicamente, il tipo di ritorno effettivo dell'espressione è ... 'oggetto'. Poiché la funzione era necessaria per restituire 'object', sono state generate le espressioni necessarie per garantire che sia il tipo restituito (una conversione in questo caso). –