C#检测AnonymousTypenew{name=value,}并转换为Dictionary我需要检测一个对象是否是匿名创建的,比如new{name=value,}如果它是AnonymousType,它应该将它的属性名称/值添加到字典中这是我自己拼凑的:varname="name";varobj=new{name=newobject(),};varlookup=newDictionary();if(obj.GetType().Name.StartsWith("f__AnonymousType")){foreach(varpropertyinobj.GetType().GetProperties()){lookup[property.Name]=property.GetValue(obj,null);}}else{lookup[name]=obj;我想知道是否有更好/更快的方法来检测AnonymousTypes,或者是否有更好/更快的方法将对象的属性名称/值转储到Dictionary中获取对象的所有属性,将它们的值放入Dictionary,您可以将Linq的强大功能耦合到具有反射的对象。您可以使用Enumerable.ToDictionary方法:vardic=obj.GetType().GetProperties().ToDictionary(p=>p.Name,p=>p.GetValue(obj,null));这将返回一个字典。使用新的集合对象初始化语法而不是匿名类型:varobj=newDictionary(){{"Name",t.Name},{"Value",t.Value}};检测匿名类型有点困难;至少它取决于语言!VB匿名类型看起来与C#匿名类型不同。我怀疑在不同类型上可能表现不同的逻辑。您可以检查[CompilerGenerated],但请注意它不仅仅意味着“匿名类型”——还有其他人这样做。就个人而言,我不会在这种情况下做出区分。以上就是C#学习教程:C#检测AnonymousTypenew{name=value,}转换成Dictionary,分享所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
