Ich habe eine generische Methode TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
und wenn TResult
als dynamic
deklariert ist, möchte ich einen anderen Code-Pfad als für andere Typ-Deklarationen ausführen.Wie teste ich auf typeof (dynamisch)?
Für normale Typen, die Sie Sachen tun können, wie:
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
Aber if (typeof(TResult) == typeof(dynamic))
lässt sich nicht kompilieren.
Gibt es trotzdem, diese Art der Bestimmung zur Laufzeit zu machen, wenn das Verfahren mit der Erklärung genannt wird:
dyanmic x = Foo<int, dynamic>(list);
Da die dynamische selbst ist kein Typ, was soll ich für testen? IDynamicMetaObjectProvider
?
BEARBEITEN Dies ist Teil eines SQL-Text zu System.Linq.Expression Evaluator. Die spezifische Wunsch zu verzweigen, wenn TResult
dynamisch ist für einige Pseudo-Logik, die etwa wie folgt aussieht:
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
Benötigen Sie das? – Gishu