在C#(.net)中给dynamic对象属性取值赋值

时间:2019-6-5 作者:WilliamChan

dynamic对象是什么?

提供用于在运行时指定动态行为的基类。 必须继承此类;不能直接对其进行实例化。

具体请看MSDN的说明:https://docs.microsoft.com/zh-cn/dotnet/api/system.dynamic.dynamicobject?redirectedfrom=MSDN&view=netframework-4.8,笔者就不重复介绍了。
dynamic的出现可不得了,它是.net用来在相当程度上取代“反射”的机制,有了它,你就不用再写复杂的反射代码了!

在使用这个类的过程,大家经常不知道怎么给dynamic类的属性取值赋值,下面笔者就讲下怎么实现。

MSDN中提到一点:“必须继承此类;不能直接对其进行实例化。

所以我们经常用到的是它的“继承类”ExpandoObject,而我们的问题“给dynamic对象属性取值赋值”可以 变成“给dynamic对象属性取值赋值”。

当然,dynamic 跟 dynamicObject没有直接联系。实际上还有 dynamicMetaObject 等等新的类,不能把名称看错。dynamic 关键字是个“语法糖”,它可以用来引用 ExpandoObject对象,DynamicObject 对象,也可以引用其它成千上万种对象。它就是用来避免你写反射代码的。

……

笔者也不多费话了,以ExpandoObject 对象来讲,“一句话”就能说明功能要点:ExpandoObject 对象实现了 IDictionary<string,object> 接口,通过它进行属性的动态处理(包括增加、删除属性等等操作)

还不知道是什么吧?那直接以代码来说明吧:


dynamic o = new ExpandoObject();
o.name="yes";
var dic = (IDictionary<string,object>)o;
dic["name"]="ok";

怎么样,是不是很简单?

 

以上就是“知道不”笔者分享的《在C#(.net)中给dynamic对象属性取值赋值》的全部内容,感谢来访!

声明:若您对本文内容有任何意见,欢迎发送邮件至:admin@zhidaobu.com,本站会尽快回应并做出相应处理。