Mam ogólnej metody TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
i jeśli TResult
jest zadeklarowany jako dynamic
Chcę wykonać inną ścieżkę kodu niż dla innych deklaracji typu.Jak wykonać test na typeof (dynamiczny)?
Dla stałych typów można zrobić rzeczy jak:
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
if (typeof(TResult) == typeof(dynamic))
Ale nie skompilować.
Czy mimo to, aby tego rodzaju determinacji przy starcie, gdy wywoływana jest metoda z deklaracją:
dyanmic x = Foo<int, dynamic>(list);
Ponieważ sam dynamiczny nie jest typem, co mam testować za? IDynamicMetaObjectProvider
?
EDYTOWANIE Jest to część tekstu SQL do oceniającego System.Linq.Expression. Specyficzny chęć do oddziału, jeżeli TResult
jest dynamiczna jest dla pewnej logiki pseudo, który wygląda mniej więcej tak:
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
Potrzebujesz tego? – Gishu