理解C# 4 dynamic(3) – DynamicObject的使用

本文介绍了如何使用DynamicObject创建DynamicJson类,以动态方式处理Json字符串,提供类似JavaScript的灵活性。DynamicJson重写了TryGetMember等方法,允许直接访问Json属性而无需预定义类型。通过示例代码展示了Parse方法、ToValue方法和TryGetMember方法的实现,简化了Json操作。
摘要由CSDN通过智能技术生成

上篇文章"理解C# 4 dynamic(2) – ExpandoObject的使用" 了解了xpandoObject的基本使用。但ExpandoObject的问题就是它是一个万金油,什么都可以做,但是又都不专注。使用DynamicObject正好可以解决这个问题。这篇文章介绍DynamicJson是如何继承DynamicObject,包装一个用来处理Json的动态类型。

一,JS可以灵活处理Json字符串

看下面的代码,

var jsonString='{"foo":"json", "bar":100, "nest":{ "foobar":true }}';var jsonObj = JSON.parse(jsonString);//接着就能方便的使用jsonObj.foo
jsonObj.nest.foobar 

代码中的jsonObj是动态类型,在.net中,我们也可以反序列化Json,但都需要指定反序列化后的对象类型。

比如使用Json.Net

Newtonsoft.Json.JsonConvert.DeserializeObject(json, typeof(employee))

有没有办法和js一样,反序列化一个dynamic类型来方便的访问Json数据?

下面先来看看DynamicObject如何使用,然后使用DynamicObject来实现我们的想法。

 

二,DynamicObject分析

DynamicObject有个构造函数,但是protected, 也就是我们没有办法直接实例化来使用它。只能是通过继承来构造DynamicObject的对象。

 

同时DynamicObject中很很多标记为Virtual的方法,比如:

public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值