2010-06-16 4 views
1

Possible en double:
Anonymous Types - Are there any distingushing characteristics?Comment savoir si l'objet est de type Anonymous?

Vous ne trouvez pas la propriété appropriée.

if(new {a = 2, b= "z"}.GetType()...) 

quoi mettre au lieu de ...?

+0

Bienvenue à SO, s'il vous plaît ne pas oublier de visiter http://stackoverflow.com/faq – Reigel

+0

Pour autant que je sache, il n'y a pas de solution prête à l'emploi , toutes les réponses fournies dans cette question et dans http://stackoverflow.com/questions/315146/anonymous-types-are-there-any-distingushing-characteristics ressemblent plus à des solutions de contournement qui pourraient cesser de fonctionner avec une version différente/nouvelle du compilateur. Il serait bon d'avoir quelque chose comme si (nouveau {a = 2, b = "z"}. GetType(). IsAnonymousType) –

+0

accept ans si cela fonctionne –

Répondre

-1

Avez-vous essayé de sortir new { a = 2, b = "z" }.GetType() pour obtenir une comparaison? Sinon, c'est ce que je ferais en premier.

var t = new { a = 2, b = "z" }.GetType(); 

var c = 2; // set a breakpoint on this line, and see what t contains 
-1

La classe anonyme inclura le nom AnonymousType, ils n'auront pas d'espace de noms ou de type déclarant. Vous pourriez l'utiliser pour voir si c'est anonyme. Bien que je ne suis pas sûr de savoir comment il est sûr ...

var t = new { a = 2, b = "z" }.GetType(); 
bool isAnonymous = t.Namespace == null && t.DeclaringType == null; 
+0

'Namespace' peut également être null pour les classes globales et 'DeclaringType' sera de toute façon null pour les types non-imbriqués. -1. – nawfal

+0

@nawfal: Ok. Cela a répondu à mon "Bien que je ne sache pas à quel point c'est sûr ..." :) – simendsjo

2

A l'exception du nom bizarre commençant par <> et contenant AnonymousType (en C#, VB comme il commence par VB$) il n'y a pas grand-chose à tester. Je ne parierais pas sur les tests de noms, cependant ...

Questions connexes