我需要检测一个对象是否是匿名创建的,像新的{name = value,}
如果它是AnonymousType,它应该将其属性名称/值添加到
Dictionary<string,object>
这是我自己一起入侵的:
var name="name"; var obj = new { name = new object(),}; var lookup = new Dictionary<string,object>(); if(obj.GetType().Name.StartsWith("<>f__AnonymousType")) { foreach (var property in obj.GetType().GetProperties()) { lookup[property.Name] = property.GetValue(obj,null); } } else { lookup[name]=obj; }
我想知道是否有更好/更快的方式来检测AnonymousTypes,
或者如果有更好/更快的方式将对象的属性名称/值转储到
Dictionary<string,object>
解决方法
要获取对象的所有属性,将其值设置为“Dictionary”,您可以将Linq的功能与“反射”对象耦合.
您可以使用Enumerable.ToDictionary方法:
var dic = obj.GetType() .GetProperties() .ToDictionary(p => p.Name,p=> p.GetValue(obj,null));
这将返回一个字典< string,object> ;.