问题标签 [expandoobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 字符串 GenerateStronglyTypedClass(ExpandoObject object) 是什么样的?
通常,当我创建 MVC 视图时,我首先将我的视图绑定到一个,ExpandoObject
这样我就可以快速找出我的视图模型的形状,而不必花时间在强类型视图模型中添加/修改/删除真实属性。
但是一旦我对我的视图模型应该是什么样子有了很好的感觉,我更愿意为它创建一个实际的类。如果我可以从 ExpandoObject 自动生成视图模型,那就太好了。那可能吗?
c# - 如何使用 ServiceStack JsonSerializer 序列化 ExpandoObject?
是否可以让 ServiceStack JsonSerializer 将 ExpandoObject 序列化为平面对象而不是字典?大致近似于此:
我正在尝试比较ExpandoObject
使用三种不同系统的 JSON 序列化:.NET BCL JavaScriptSerializer、Newtonsoft JSON.NET 和 ServiceStack 的 JSON 产品。
我从一个相当简单的动态对象开始。
序列化程序将 ExpandoObject 视为IDictionary<string, object>
. BCL 和 ServiceStack 都是以这种方式开始的,尽管结果的路径完全不同。
我希望 ExpandoObject 更多地序列化,因为它是在代码中组装的,就像一个典型的类会被序列化一样。您可以为IDictionary<string, object>
. 这很好用,假设一个人实际上没有IDictionary<string, object>
需要保持这种状态(我还没有)。
不幸的是,我仍然需要一种方法来让 ServiceStack 的 JsonSerializer 以同样的方式处理 ExpandoObject。我如何连接到 ServiceStack 系统以使这成为可能?
更新:虽然它不是我使用的选项,但看起来 ServiceStack 可以很好地处理匿名对象。
c# - 如何将对象包装在动态对象中?
给定一个System.Object
,我如何获得一个动态对象来访问它可能拥有的任何成员。
具体来说,我想对返回JsonResult
. JsonResult
具有类型的Data
属性object
。我用匿名类型填充这个对象:
在我的测试中,我想做类似的事情
这是怎么做到的?
更新
虽然result.Data
是 type object
,但在 Watch 窗口中检查它显示它具有以下类型:
data-binding - 对动态和 ExpandoObjects 的数据绑定是否在 .NET 中工作
在我的一生中,我似乎无法让数据绑定到 Dynamics 或 ExpandoObjects 工作。
我已经在 WinForms 和 WebForms 中尝试过这个并在每个中得到不同的结果:
在 ASP.NET 中:
这导致:
DataBinding:“System.Dynamic.ExpandoObject”不包含名为“Name”的属性。
在 WinForms 中,我有一个不同的问题:
这导致 ComboBox 显示“System.Dynamic.ExpandoObject” - 因为它只是在集合中的两个项目上调用 ToString()。:(
感谢您的帮助!
c# - 为什么我不能这样做:动态 x = new ExpandoObject { Foo = 12, Bar = "twelve" }
我做错了什么,还是下面的代码真的不可能?
如果这真的不可能,是否有另一种单行方式来实例化具有两个属性的 ExpandoObject?
为什么 C# 团队会选择禁止与常规对象、匿名对象和枚举/列表相同的初始化语法?
更新
我问这个问题是因为我试图向 Pearl 爱好者展示 C# 很酷的新动态特性,但后来我因为无法做我认为是逻辑实例化的ExpandoObject
. 感谢 Hans Passant 的回答,我意识到这ExpandoObject
是错误的工作工具。我真正的目标是使用 C# 的动态特性从一个方法返回两个命名值。正如汉斯指出的那样,dynamic
关键字非常适合这个。我不需要ExpandoObject
, 及其所有开销来执行此操作。
因此,如果您想从一个方法返回一对命名值,并且您不关心类型安全、智能感知、重构或性能,这非常有效:
用法:
c# - 跨 dll 边界访问匿名/动态类型的属性会产生 RuntimeBinderException
在下面的示例中,x.propertyX工作正常,而y.propertyX给了我一个Microsoft.CSharp.RuntimeBinder.RuntimeBinderException,抱怨 'propertyX' 没有在 'object' 中定义。
Program 类中的 CreateDynamic 方法(如下所示)和 Class1 中的方法(未显示)完全相同,但 Class1 与 Program 位于不同的项目中。如果我将 Class1 移到 Program 的项目中,一切正常。
我需要做什么才能使匿名类型在 dll 中作为动态类型工作 - 还是不可能?
更新: Fwiw,我发现我可以使用 ExpandoObjects 解决这个问题,然后我将其“转换”为动态,但与
匿名类型提供的样式。
c# - 如何将 ExpandoObject 的字典设置为不区分大小写?
给出下面的代码
有没有办法让它不区分大小写,所以给定字段名称employee_name
e.Employee_name 和 e.employee_name 一样有效
似乎没有明显的方法,也许是黑客?
c# - 如何转换字典到字典使用 Colllection.ToDictionary()
我正在使用 Dapper 将 2 列结果集提取到字典中。我注意到当我将鼠标悬停在结果集上时,intellisense 向我显示了一个 .ToDictionary() 但我无法让它工作,因为 dapper 使用动态属性/expandoObject
谢谢你
c# - ExpandoObject 中的列表
当我运行它时,我可以看到模型内的数据,但看不到 listOfx。
问题:如何在 ExpandoObject 中获取列表(或 IEnumerable)
解决方案更新:
因为我在本地窗口中看不到 lifOfx,所以我认为它不起作用。在这里(通过 y)你可以看到它。:-)
c# - 在 Scala 中实现 ExpandoObject
我正在尝试在 Scala 中实现类似C# 的ExpandoObject
类。这就是它应该如何工作:
这是我到目前为止所尝试的:
当我尝试编译此代码时,我得到一个StackOverflowError
. 请帮我完成这项工作。:) 谢谢。