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对象属性取值赋值》的全部内容,感谢来访!