J'ai une méthode générique TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
et si TResult
est déclaré comme dynamic
Je veux exécuter un chemin de code différent que pour les autres déclarations de type.Comment puis-je tester pour typeof (dynamique)?
Pour les types réguliers que vous pouvez faire des choses comme:
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
Mais if (typeof(TResult) == typeof(dynamic))
ne compile pas.
est-il de toute façon de faire ce genre de détermination lors de l'exécution lorsque la méthode est appelée avec la déclaration:
dyanmic x = Foo<int, dynamic>(list);
Depuis elle-même dynamique n'est pas un type que dois-je testerai pour? IDynamicMetaObjectProvider
?
EDIT Cela fait partie d'un évaluateur SQL System.Linq.Expression. Le désir spécifique à la branche si TResult
est dynamique pour une logique pseudo qui ressemble à ceci:
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
Besoin de ça? – Gishu