加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:58:18 所属栏目:百科 来源:网络整理
导读:我需要检测一个对象是否是匿名创建的,像新的{name = value,} 如果它是AnonymousType,它应该将其属性名称/值添加到 Dictionarystring,object 这是我自己一起入侵的: var name="name";var obj = new { name = new object(),};var lookup = new Dictionarystri
我需要检测一个对象是否是匿名创建的,像新的{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 ;.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读