我正在尝试学习C#4.0带来的所有新function。 我无法理解DynamicObject和ExpandoObjecttypes之间的区别。 看起来像DynamicObject被使用,例如,当您想要访问与COM / Office对象交谈时从Python脚本和ExpandoObjectvariables。 我对吗? 它们的用途有什么不同?
在编译运行时的服务器端dynamic对象时,我非常喜欢ExpandoObject ,但是我在JSON序列化过程中遇到了麻烦。 首先,我实例化对象: dynamic expando = new ExpandoObject(); var d = expando as IDictionary<string, object>; expando.Add("SomeProp", SomeValueOrClass); 到现在为止还挺好。 在我的MVC控制器中,我想将其作为JsonResult发送,所以我这样做: return new JsonResult(expando); 这将JSON序列化到下面,供浏览器使用: [{"Key":"SomeProp", "Value": SomeValueOrClass}] 但是,我真的很想看到这个: {SomeProp: SomeValueOrClass} 我知道我可以实现这一点,如果我使用dynamic而不是ExpandoObject – JsonResult能够将dynamic属性和值序列化到一个对象(没有键或值业务), 但我需要使用ExpandoObject的原因是因为我不直到运行时才知道对象上的所有属性 ,而据我所知,我不能dynamic地将属性添加到dynamic而不使用ExpandoObject 。 我可能不得不在JavaScript中筛选“Key”,“Value”业务,但是我希望在把它发送给客户端之前弄清楚。 谢谢你的帮助!
System.Dynamic.ExpandoObject , System.Dynamic.DynamicObject和dynamic之间有什么区别? 你在哪些情况下使用这些types?