我对负责将简单 Javascript 对象和数组转换为“托管类型”(为简洁起见,C#)对象的转换机制有点困惑。
Microsoft 文章的第一部分关于此状态(或似乎暗示)转换是隐式和自动的:
- JavaScript 数组被转换为 object[]。
- JavaScript 字典被转换为 Dictionary。
但是,后续部分似乎提到了转换的帮助器create
和createObject
函数的必要性:
数组:
数组和列表类型
默认值是从 JavaScript 到托管代码的显式按值封送处理。不支持对托管输入参数的自动 JSON 序列化。相反,您必须显式使用可创建类型或创建辅助方法。
... ...
按值编组
如果要按值将 JavaScript 数组传递给托管代码,则目标 .NET Framework 属性或输入参数的类型必须不是 ScriptObject。然后,您必须使用create 或createObject帮助器方法之一显式强制将 JavaScript 数组转换为 .NET Framework 列表或数组类型。
(“字典和自定义类型”有一对几乎相同的子句)
是否有我遗漏的东西,或者文档是否矛盾?简单对象和数组的转换是否是隐式和自动的?如果是这样,后面的条款适用于哪些对象?如果不是,为什么在隐式转换的原始 Javascript 类型中提到它们?