问题标签 [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.

0 投票
1 回答
2380 浏览

asp.net - 如何让 WebMethods 序列化 ExpandoObject

我有一个看起来像这样的 WebMethod,用于填充 jqGrid

"results" 是一个 System.Dynamic.ExpandoObject,具有 Items、TotalPages、TotalRecords 属性

我从 web 服务返回的 json 看起来像这样

理想情况下,我希望它在没有所有 Key 和 Value 业务的情况下返回,因为它不必要地膨胀了 json 并且不能很好地与 jqGrid 配合使用。

有没有办法改变 ASP.NET 处理 ExpandoObject 序列化的方式?

0 投票
2 回答
1061 浏览

c# - 在运行时将文字字符串分配为动态对象的属性并访问它

如何在运行时将 sqldatareader 的字段名动态分配给动态对象?

假设我已将 SqlDataReader 的字段名读入变量:

我不能说:

我怎样才能做到这一点?

更新:

还有时间得到一点;-) 我将我的 dyn 对象添加到 ExpandoObject 类型的 List 中,这是一个方法的返回值。当我通过 data[0].test 访问列表时,编译时属性不存在???

当我在返回列表的方法之外执行此操作时:

为什么我必须投它?任何解决方法?谢谢乔恩。

0 投票
1 回答
187 浏览

asp.net - System.Dynamic ExpandoControl 可能吗?

我试图弄清楚如何创建一个基本上是 ExpandoObject 的 Web 服务器控件。

希望在 aspx 标记中创建控件时自动在控件上创建一个属性。

例如:

其中 someProperty 属性尚不作为控件上的属性存在。

我还应该提到,我并不严格需要 Control 或 WebControl 的任何功能。我只需要能够使用 runat="server" 在标记中声明它(这本身可能要求它是一个控件,至少我是这么想的)。

可能吗?如果是这样,我该如何开始?

非常感谢。

0 投票
1 回答
5388 浏览

c# - DynamicObject 和 TrySetMember 性能与 ExpandoObject 性能

我正在使用 DynamicObject 的自定义实现,它非常适合我的应用程序,除了我遇到了一些性能问题。动态会产生一些性能开销,但我看到即使使用 ExpandoObject 也会有显着的(阅读:数量级)性能损失。

我不能使用 ExpandoObject 的原因是我想覆盖它的一些行为。我将问题归结为下面的一个非常简单的示例。

我的自定义 ExpandoObject 代码如下(简化为足以显示问题的代码)-

当我直接在 DynamicObject 的字典中设置值时(iemdictionary["keyname"] = 500),然后我看到类似于 ExpandoObject 的性能,即在亚毫秒时间内设置字典中键的值。当我使用 TrySetMember 覆盖 (iemkeyname = 500) 时,我看到每个键值集的性能下降到 30 毫秒 - 50 毫秒。当写入很多键时,这显然会成为一个问题。即使我一遍又一遍地写入同一个密钥,通过 TrySetMember 访问它也需要相同的时间。

我真正的性能问题似乎与我使用动态的事实无关,因为它使用 TrySetMember 覆盖。对于踢,我什至评论了

在 TrySetMember 方法中,只留下一个“return true;”,性能是一样的。

如果我在我的 SuperExpando 类中添加如下内容——

通过 TryGetMember 访问(读取)变量的性能问题是相同的,而直接读取字典提供了合理的性能。

有任何想法吗?

-BJ奎因

编辑:这是完整的示例代码。只需创建一个表单并在其上放置一个运行 go_Click 事件的按钮并将您的项目设置为控制台应用程序。对我来说,在 ExpandoObject 中设置所有 50 个键需要大约 30 毫秒,而 SuperExpando 至少需要大约 750 毫秒。

0 投票
1 回答
3555 浏览

c# - ExpandoObjects 的动态视图“隐藏”具有空值的属性

我有一些代码适用于由数据库调用填充的 ExpandoObjects。总是有些值是空值。当我将对象视为 ExpandoObject 时,我会看到底层字典中的所有键和值(包括空值)。但是,如果我尝试通过动态引用访问它们,则任何具有相应空值的键都不会显示在对象的动态视图中。当我尝试通过动态引用上的属性语法访问它时,我得到一个 ArgumentNullException。

我知道我可以通过直接使用 ExpandoObject、添加一堆 try catch、将 expando 映射到具体类型等来解决这个问题,但这首先违背了拥有这个动态对象的目的。如果某些属性具有空值,则使用动态对象的代码可以正常工作。有没有更优雅或更简洁的方式来“隐藏”这些具有空值的动态属性?

这是演示我的“问题”的代码

0 投票
2 回答
4658 浏览

expandoobject - 如何对列表进行排序包含 ExpandoObjects

我有一个包含 ExpandoObjects 字典的列表。我将它绑定到网格,但现在我想对列表进行排序。

因此,查看上面的测试代码,我将如何对“ID”或“名称”或我动态添加的任何其他属性的行进行排序(升序或降序)?

更多信息,我希望像这样对其进行排序(这不起作用);

0 投票
2 回答
1703 浏览

dynamic - Telerik ASP MVC 的动态模型

有没有人找到一种使用 ExpandoObject、DynamicObject 或 Reflection.Emit 动态创建网格并同时允许 CRUD 操作的方法?

我能够使用 Reflection.Emit 动态创建我的网格列并显示数据,但是一旦我尝试编辑一行,单元格内容就会消失。

任何帮助将不胜感激!

0 投票
2 回答
813 浏览

c# - c#动态ExpandoObjects名称中的句点?

也许这是一个愚蠢的问题,但我正在做一个项目,希望我生成一些如下所示的 JSON

在 C# 中,我试图创建这个“action.type”属性,其值为“post”。我该怎么做?以下是我通常创建的内容,例如:

我不能去“ActionSpec.action.type”,因为那不会输出所需的“action.type”。这有意义吗?谢谢!

0 投票
2 回答
16725 浏览

c# - 向 ExpandoObject 添加与字符串同名的属性

有没有办法将属性添加到与字符串值同名的 ExpandoObject?

例如,如果我有:

我可以创建属性 ProductNumber,如:

但是,我可以obj.ProductNumber根据字符串创建属性propName吗?因此,如果我不知道该属性的名称将是什么高级,我可以根据此输入创建它。如果 ExpandoObject 无法做到这一点,我应该研究 C# 的任何其他领域吗?

0 投票
1 回答
1845 浏览

c# - 在 codedom 中使用动态对象创建 LINQ 查询

我尝试在 LINQ 查询中使用 expandoobjects 来查询在运行时创建的属性,例如来自 csv 文件的标题。如果直接在代码中键入 LINQ 查询,则一切正常,如示例所示:

然后我尝试从命令行读取查询并使用稍微修改过的评估 linq 编译器版本创建动态 LINQ 查询。

只要我不使用 WHERE 或 ORDER BY 语句,一切都很好,但如果查询中包含任何 WHERE 或 ORDER BY,我在 linq 编译器中编译 codedom 代码时会出错:CS1963: An expression树可能不包含动态操作。

查询代码是使用以下行创建的:

我想 codedom 编译器正在以某种不同于解析直接键入 LINQ 查询的方式构建表达式树。任何让它工作的想法都会被认可,包括为运行时生成的对象动态创建查询的其他想法。