2010-06-16 29 views
1

可能重复:
Anonymous Types - Are there any distingushing characteristics?如何找出对象是否为匿名类型?

无法找到合适的物业。

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

要放什么而不是...?

+0

欢迎来到SO,请不要忘记访问http://stackoverflow.com/faq – Reigel 2010-06-16 06:42:24

+0

据我了解,没有开箱即用的解决方案,在这个问题和http://stackoverflow.com/questions/315146/anonymous-types-are-there-any-distingushing-characteristics中提供的所有答案听起来更像是可以停止与不同/新编译器版本一起工作的解决方法。如果(新{a = 2,b =“z”}。GetType()。IsAnonymousType) – 2010-06-16 10:27:59

+0

接受ans if – 2010-09-17 07:54:33

回答

-1

您是否尝试过输出new { a = 2, b = "z" }.GetType()以获得与之比较的值?如果没有,这是我首先要做的。

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

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

匿名类将包含名称AnonymousType,它们不会有一个名称空间或声明类型。您可以使用它来查看它是否是匿名的。虽然我不知道它是如何安全...

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

'Namespace'对于全局类也可以为null,这将是很好的。无论如何,'DeclaringType'对于非嵌套类型将为空。 -1。 – nawfal 2013-10-10 07:32:28

+0

@nawfal:好的。这回答我的“虽然我不知道它有多安全......”:) – simendsjo 2013-11-15 18:54:46

2

除了开始<>和含AnonymousType(在C#中,如VB它VB$开始)没有太多要测试的怪异的名字。我不会赌名称测试,但是...