C# 字典转指定类型

创建Helper

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dicToObj
{
    internal class Helper
    {
        /// <summary>
        /// 字典类型转化为对象
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public T DicToObject<T>(Dictionary<string, object> dic) where T : new()
        {
            var md = new T();
            CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
            TextInfo textInfo = cultureInfo.TextInfo;
            foreach (var d in dic)
            {
                var filed = textInfo.ToTitleCase(d.Key);
                try
                {
                    var value = d.Value;
                    md.GetType().GetProperty(filed).SetValue(md, value);
                }
                catch (Exception e)
                {

                }
            }
            return md;
        }
    }
}

使用演示

csharp 复制代码
using dicToObj;

var dic = new Dictionary<string, object>()
{
    {"name", "Tom"},
    {"age", 25},
    {"address", "Beijing"}
};

Helper helper = new Helper();
var person = helper.DicToObject<Person>(dic);


Console.WriteLine(person);
Console.WriteLine();

public record Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}

补充

但是上述方法无法将字典转化为object,可以使用序列化巧妙转化

csharp 复制代码
 public static object DicToObj(Dictionary<string, object> dictionary)
    {
        string json = JsonConvert.SerializeObject(dictionary);
        return JsonConvert.DeserializeObject<object>(json);
    }
相关推荐
我叫黑大帅8 分钟前
TCP通信 - 处理 TCP 流中的消息分片
后端·面试·go
卜夋12 分钟前
Rust 所有权概念
后端·rust
希望永不加班14 分钟前
SpringBoot 依赖管理:BOM 与版本控制
java·spring boot·后端·spring
群书聊架构14 分钟前
基于共享内存的高性能 Linux IPC 设计实践(上):从原理到无锁环形缓冲区
后端
落木萧萧82517 分钟前
MyBatis、MyBatis-Plus、JPA、MyBatisGX 写法比较:同一个需求,四种解法
java·后端
PFinal社区_南丞19 分钟前
为什么我用 Go 写 AI Agent 而不是 Python
后端·go
SimonKing32 分钟前
AI大模型中转平台,无需科学上网就可以使用国外模型
java·后端·程序员
IT_陈寒41 分钟前
SpringBoot自动配置的坑把我埋了半小时
前端·人工智能·后端
代码漫谈1 小时前
Spring Boot 配置指南:约定大于配置的应用
java·spring boot·后端