Fork me on GitHub

C# dynamic动态对象赋值

dynamic 如果接收的是匿名对象,是无法为属性赋值的,而如果是接收的定义对象,又无法扩展字段。
解决办法序列化为json字符串,然后用Dictionary反序列化,就能赋值了。也能扩展新的字段。
代码:
dynamic obj = new { a = 1, b = 2,hh=3 };
            dynamic obj2 = new { obj1 = obj, a3 = 123 };
            var str = JsonConvert.SerializeObject(obj2);
            var dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(str);
            int a = dic["obj1"].a;
            dic["obj1"].a+=1;
            dic["ooo"] = "3_=";

 

posted @ 2023-02-16 20:35  HelloLLLLL  阅读(907)  评论(0编辑  收藏  举报