简单对象和数组是如何传递的?
本文关键字:何传递 单对象 数组 简单 | 更新日期: 2023-09-27 17:55:02
我对负责将简单Javascript对象和数组转换为"托管类型"(为简洁起见,c#)对象的转换机制有点困惑。
微软文章的第一部分说明(或似乎暗示)转换是隐式的和自动的:
- JavaScript数组被转换为object[].
- JavaScript字典被转换为字典。
然而,随后的章节似乎提到了帮助器create
和createObject
函数在转换中的必要性:
数组和列表类型
默认值是显式按值封送从JavaScript到托管代码。不支持对托管输入参数的自动JSON序列化。相反,您必须显式地使用可创建类型或创建助手方法。
... ...
按值封送处理
如果要按值将JavaScript数组传递给托管代码,则target .NET Framework属性或输入参数必须键入为ScriptObject之外的东西。然后必须使用中的一个创建或createObject helper方法来显式强制从将JavaScript数组转换为。net Framework列表或数组类型。
("字典和自定义类型"有几乎相同的一对子句)
是我遗漏了什么,还是文档矛盾?简单对象和数组的转换是隐式和自动的吗?如果是,后面的从句适用于什么对象?如果没有,为什么在隐式转换的基本Javascript类型中提到它们?
1)本文将给出答案。一段你没有引用的段落
JavaScript字典将按value递归封送到目标。net框架类型。Silverlight将使用JSON序列化器将JavaScript字典反序列化到符合。net框架自定义类型或字典。
2)因为自定义类型可能在已知类型中。如果你是这样一个异端,.net确保你可以随意绕过转换。我说异端,既然如此,为什么要使用json呢?=)