C#字典轉(zhuǎn)指定類型的技巧分享
創(chuàng)建Helper
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>
/// 字典類型轉(zhuǎn)化為對象
/// </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;
}
}
}使用演示
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; }
}
補(bǔ)充
但是上述方法無法將字典轉(zhuǎn)化為object,可以使用序列化巧妙轉(zhuǎn)化
public static object DicToObj(Dictionary<string, object> dictionary)
{
string json = JsonConvert.SerializeObject(dictionary);
return JsonConvert.DeserializeObject<object>(json);
}
到此這篇關(guān)于C#字典轉(zhuǎn)指定類型的技巧分享的文章就介紹到這了,更多相關(guān)C#字典轉(zhuǎn)指定類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C#和Jieba.NET實(shí)現(xiàn)中英文混合文本關(guān)鍵詞的提取功能
Jieba.NET?是一個在?C#?中實(shí)現(xiàn)的分詞庫,它基于?Java?的?jieba?分詞庫,并進(jìn)行了?C#?語言的移植,Jieba?是一個高效的中文分詞工具,能夠處理全模式、精確模式以及搜索引擎模式,本文給大家介紹了如何使用C#和Jieba.NET實(shí)現(xiàn)中英文混合文本關(guān)鍵詞的提取功能2025-03-03
Unity的AssetPostprocessor之Model函數(shù)使用實(shí)戰(zhàn)
這篇文章主要為大家介紹了Unity的AssetPostprocessor之Model函數(shù)使用實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
C# Redis學(xué)習(xí)系列(二)Redis基本設(shè)置
這篇文章主要為大家分享了C# Redis學(xué)習(xí)系列教程第二篇, Redis基本設(shè)置,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Unity3D使用Shader實(shí)現(xiàn)腐蝕消失
這篇文章主要為大家詳細(xì)介紹了Unity3D使用Shader實(shí)現(xiàn)腐蝕消失,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02
C#中Timer實(shí)現(xiàn)Tick使用精度的問題
這篇文章主要介紹了C#中Timer實(shí)現(xiàn)Tick使用精度的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
C# Winform 實(shí)現(xiàn)屏蔽鍵盤的win和alt+F4的實(shí)現(xiàn)代碼
最近在做一個惡搞程序,就是打開后,程序獲得桌面的截圖然后,然后全屏顯示在屏幕上,用戶此時則不能進(jìn)行任何操作。2009-02-02

