c# dynamic动态类型和匿名类

本文详细介绍了C#中的动态类型及ExpandoObject的使用方法,包括如何创建动态对象、动态添加字段、枚举成员及与JSON转换的实践。通过示例展示了动态类型在实际开发中的灵活应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dynamic类型

简单示例

dynamic expando = new System.Dynamic.ExpandoObject(); //动态类型字段 可读可写
expando.Id = 1;
expando.Name = "Test";
string json = Utils.ConvertJson.JsonEncode(expando);  //输出{Id:1,Name:'Test'}

 

//动态添加字段 

List<string> fieldList = new List<string>() { "Name","Age","Sex"}; //From config or db

dynamic dobj = new System.Dynamic.ExpandoObject();

var dic = (IDictionary<string, object>)dobj;
foreach (var fieldItem in fieldList)
{
  dic[fieldItem] = "set "+fieldItem+" value";  /*实现类似js里的 动态添加属性的功能

                                                                        var obj={};
                                                                        var field="Id";

                                                                        eval("obj."+field+"=1");

                                                                        alert(obj.Id); //1  */


}
var val = dobj.Name; //“set Name value”

var val1=dobj.Age;//”set Age value“

 枚举该对象所有成员

foreach (var fieldItem in (IDictionary<String, Object>)dobj)
{
  var v = (fieldItem.Key + ": " + fieldItem.Value);
}

匿名类

//var aaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写

dynamic aaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写
aaaa.Id = 2; //不可写 报错无法为属性或索引器“<>f__AnonymousType1<int>.Id”赋值 - 它是只读的

 

dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject("{Name:'aa',Sex:'Male',Age:11}");
var name = obj.Name.Value; //aa

 

原文地址:http://www.cnblogs.com/xuejianxiyang/p/4964739.html

转载于:https://www.cnblogs.com/xuejianxiyang/p/4964739.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值