Ho un metodo generico TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
e se TResult
è dichiarato come dynamic
Voglio eseguire un percorso di codice diverso rispetto ad altre dichiarazioni di tipo.Come posso testare typeof (dinamico)?
Per i tipi regolari che si possono fare cose come:
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
Ma if (typeof(TResult) == typeof(dynamic))
non viene compilato.
Esiste un modo per fare questo tipo di determinazione in fase di esecuzione quando il metodo viene chiamato con la dichiarazione:
dyanmic x = Foo<int, dynamic>(list);
Dal dinamica in sé non è un tipo di cosa dovrei prova per? IDynamicMetaObjectProvider
?
EDIT Questo fa parte di un testo SQL per System.Linq.Expression valutatore. La precisa volontà di espandersi se TResult
è dinamico è per una logica pseudo che sembra qualcosa di simile:
if (type is struct)
create selector that initializes each element to result values
else if (type is class)
create selector that initialize each element to new instance and set member properties
else if (type is dynamic)
create selector that initializes each element to new `ExpandoObject` and populates/sets member properties
Hai bisogno di questo? – Gishu