C#检测AnonymousType new {name = value,}并转换成Dictionary

前端之家收集整理的这篇文章主要介绍了C#检测AnonymousType new {name = value,}并转换成Dictionary前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要检测一个对象是否是匿名创建的,像新的{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&gt ;.

原文链接:/csharp/93187.html

猜你在找的C#相关文章