问题标签 [dynamicobject]

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.

0 投票
2 回答
2414 浏览

c# - 创建具有未知属性类型的动态对象

我想在 ASP.NET MVC 应用程序上创建一个通用的服务器端 DataTable 解决方案。我在每个Index视图上都有一个 JQuery 数据表,它带有对控制器的 AJAX 调用以检索分页数据结果。执行的操作如下:

返回给 jQuery DataTable 控件的响应格式如下:

我正在处理的部分是制定要返回的模型项目列表,即:

results应该是任何模型对象的列表,包括其所有相关属性。我一直在尝试reflection与完成此解决方案一起使用ExpandoObject,但无法弄清楚机制:

即使在键入此内容时,我也已经弄清楚了一些事情。我无法弄清楚的部分:

即设置属性类型 eg: DateTime.

让我重复一遍。我想构建一个模型项目列表。这可以是具有任意数量属性的任何模型类型,每个属性可以是任何类型(int、string、bool、DateTime 等)

0 投票
1 回答
1943 浏览

c# - 同一命名空间中的“动态对象不包含定义”错误

这是我第一次尝试动态对象。我有一个包含字符串 ID 和浮点值的“单元格”类。我想要的是获取一个 Cells 列表并创建一个动态对象,并将其所有 ID 和值作为属性。

这是我的“DynamicRow”:

我试着用这个测试它:

有了这个我得到一个编译器错误

“WPFView.DynamicRow”不包含“NA2_DIR”的定义,并且找不到接受“WPFView.DynamicRow”类型的第一个参数的扩展方法“NA2_DIR”

我读了一些类似的问题,但他们的问题是动态对象是在与调用方法不同的程序集中定义的。在我的例子中,动态对象与调用方法在同一个项目和命名空间中。

我该如何解决这个错误?

0 投票
1 回答
2543 浏览

c# - 如何转换列表到 XML 字符串

我想使用 ExpandoObjects 列表作为 Telerik Report 的数据源,但 Telerik Reports 目前似乎不支持这一点。他们确实支持将 XML 作为数据源,因此我正在尝试将我的 ExpandoObjects 列表转换为 XML 字符串。

我已经看到(在Can I serialize an ExpandoObject in .NET 4?)可以通过 jsonFx 将单个 ExpandoObject 序列化为 XML 字符串(VB.net 代码,而不是 c#):

或其等效的 c# 代码:

如何将整个列表序列化为 XML 字符串?

0 投票
1 回答
214 浏览

c# - DynamicObject 对于空值的行为不同

这是一个DynamicDataObject派生自的类DynamicObject

我正在消费DynamicDataObject如下。

我可以在其中看到所有成员person及其值,_dataDictionary但同时调试器视图排除了具有null值的成员。因此该person.Address成员在动态视图集合中不可见。(请参见下面的屏幕截图)。谁能帮我理解为什么DynamicObject在这种情况下表现不同?

在此处输入图像描述

0 投票
1 回答
536 浏览

winforms - winform PropertyGrid 可以编辑动态对象吗?

正如我们所知,默认情况下,winform PropertyGrid 能够编辑预定义类的属性。但是,有时我们可能需要编辑动态创建的对象。参考下面的代码:

ParamForm 窗口包含 2 个控件,一个 PropertyGrid 和一个 Button。它旨在能够编辑仅包含字符串或布尔字段的动态对象。

问题是在 PropertyGrid 控件中显示的 Firstname & Lastname 显示为灰色且无法编辑。那么如何让 PropertyGrid 能够编辑动态创建的对象呢?

0 投票
1 回答
3053 浏览

c# - (De) 用 Jil 序列化 DynamicObject?

我在使用其他不是Newtownsoft.Json的 json 库(反)序列化DynamicObject时遇到问题。(Jil、NetJSON、ServiceStack.Text...)

这是我的可扩展对象类:

其他库(如 Jil)的问题是未调用覆盖的方法。 使用 Newtonsoft.Json 效果很好,但性能很差。

例如 - 派生类的反序列化测试:

也不例外..它只是忽略了“SomeFiled”字段(应该在“Extra”中)

1.有什么解决办法吗?

2.为什么Newtonsoft.Json能执行操作而JIL不能?(或其他快速库......)。我知道DLR应该调用被覆盖的方法。我怎样才能让它工作?

谢谢。

编辑:

现在我使用DeserilizeDynamic而不是 Deserialize(T)。现在它可以工作了,我的方法由 DLR 调用。目前唯一的问题是 DeserilizeDynamic 返回“动态”并且没有通用覆盖 (T)。并且由于该 Web API 无法解析 POST 操作上的对象类型,例如。也许将来...

0 投票
0 回答
78 浏览

c# - 来自最简单类型的 StackOverflowException 扩展了 DynamicObject

我遇到了一个来自类型扩展 DynamicObject 的奇怪问题。我什至尝试了来自 MSDN 的示例:

用法:

该代码适用于一个新的简单控制台,但它只是从一个巨大的 WPF 应用程序中抛出 StackOverflowException。在 WPF 中,我们还有其他使用 ExpandoObject 的动态代码,但 DynamicObject 失败了:

堆栈溢出

WPF 项目和控制台都是 .NET 4.0(完整配置文件)。有人可以分享一些想法吗?

0 投票
0 回答
337 浏览

c# - IronPython 与 DynamicObject 子类

我有一个继承的类DynamicObject,我需要通过IronPython. 我可以毫无问题地访问动态属性,但普通的旧属性不起作用。

这是我的对象的一个​​稍微简化的实现:

这是一个NUnit演示问题的测试用例:

第一个测试通过,但第二个没有,因为它抛出:

System.MissingMemberException:“Foo”对象没有属性“PlainOldProperty”

这是因为发生了什么TrySetMember():如果我们试图设置的成员尚未包含在字典中,它会将作业委托给DynamicObject的版本TrySetMember()。事实证明,它返回false,因此是例外。

但是,你如何设置PlainOldPropertyIronPython?正如C#预期的那样,它工作得很好。

我要么错过了什么,要么无法完成。

此外,我尝试覆盖所有其他方法,DynamicObject以查看它们是否被 击中IronPython,但没有雪茄。

任何人都可以解释为什么会这样吗?

0 投票
0 回答
180 浏览

c# - MicroLite ORM 是否支持 DynamicObject / IDynamicObjectMetaProvider

我正在寻找一个支持 DynamicObject / IDynamicObjectMetaProvider 结构的微系统,例如:

填充:

它只是抛出一个MicroLiteException附加信息System.Object

MicroLite 是否支持此类对象?

0 投票
1 回答
582 浏览

c# - 在 DynamicObject 上添加操作

我有一个 DynamicObject 的子类,我在其中实现了几个隐式运算符(用于自动转换)并覆盖了一些 Try[OperationType] 方法。

当我尝试使用该类型的对象进行 add(+) 操作时出现异常(问题底部的异常)。

我认为对这个问题有帮助的答案是这个。描述的行为是正确的,但是我的动态对象定义了几个静态隐式运算符,我认为问题出在字符串之一。当我为字符串定义隐式运算符时,que add(+) 操作会引发异常。我可以通过堆栈跟踪观察到问题可能是他无法绑定运算符,我开始认为那是因为某种添加/连接混淆。

我简化了我的代码并编写了这个测试,我认为它描述了这种情况。当我评论字符串的隐式运算符时,一切都很好。

难道我做错了什么?我还需要重写一些方法吗?有什么想法吗?

例外: