【发布时间】:2018-02-16 23:59:57
【问题描述】:
我有一个 .NET 通用字典,我想将它传递给我在 Jint 中运行的 JavaScript 函数。
Jint 不会将 .NET Dictionary 视为 JavaScript 对象,而 JavaScript 对象可被视为字典。您可以访问对象的 .NET 属性和方法,但不能访问扩展方法。
因此,虽然我可以获得字典键的计数,但我无法枚举它或对其调用 ToArray()。
我可以使用 dict[key] 从字典中读取值,但在这种情况下我事先不知道键。
如何枚举键或获取 .NET 通用字典中的所有条目?
我愿意对字典做一些事情或在我将它传递给它之前对其进行转换,或者弄清楚如何在 JavaScript 中做它。我宁愿不必单独传递一个键数组。这是在另一个数据结构中,对每个字典都这样做会使其更加复杂,但如果我找不到其他解决方案,这是我正在考虑的选项之一。
我宁愿远离使用动态。在过去大量使用它们时,我遇到了泄漏内存的问题。
【问题讨论】:
-
您可以遍历 JavaScript 对象属性,例如 this,但是,在这里很难准确说出您想要做什么。在 .net 端,你可以枚举一个
Dictionary<T>KeyCollection,并获取所有键的列表。 -
在 jint 中不起作用。如果该对象是在 JavaScript 中声明的,我可以使用普通的 js 方式来做这件事,但是它是一个传递到 js 环境中的 .NET 对象,你不能像普通的 js 对象一样对待它。我已经专门尝试过 for(var i in mydict) 和 for(var i in mydict.Keys) 都不起作用。
-
Jint 不会尝试解析扩展方法,例如
ToArray。你可以尝试推出你自己的ObjectWrapper版本,但我只是尝试过,这并不简单(一些有用的方法是私有的,所以你必须复制它们)
标签: javascript c# dictionary jint