我需要检测一个对象是否是匿名创建的,如new {name = value,}
如果它是AnonymousType,它应该将它的属性名称/值添加到a
Dictionary<string,object>
Run Code Online (Sandbox Code Playgroud)
这就是我自己一起攻击的内容:
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;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好/更快的方法来检测AnonymousTypes,或者是否有更好/更快的方法将对象的属性名称/值转储到
Dictionary<string,object>
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 24
要获取对象的所有属性,将其值设置为a Dictionary,您可以将Linq的强大功能耦合到带反射的对象.
您可以使用Enumerable.ToDictionary方法:
var dic = obj.GetType()
.GetProperties()
.ToDictionary(p => p.Name, p=> p.GetValue(obj, null));
Run Code Online (Sandbox Code Playgroud)
这会给你一个回报Dictionary<string, object>.
使用新的集合对象初始值设定项语法而不是匿名类型:
var obj = new Dictionary<string, object>()
{
{ "Name", t.Name },
{ "Value", t.Value }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5273 次 |
| 最近记录: |