1

我对负责将简单 Javascript 对象和数组转换为“托管类型”(为简洁起见,C#)对象的转换机制有点困惑。

Microsoft 文章的第一部分关于此状态(或似乎暗示)转换是隐式和自动的:

  • JavaScript 数组被转换为 object[]。
  • JavaScript 字典被转换为 Dictionary。

但是,后续部分似乎提到了转换的帮助器createcreateObject函数的必要性:

数组:

数组和列表类型

默认值是从 JavaScript 到托管代码的显式按值封送处理。不支持对托管输入参数的自动 JSON 序列化。相反,您必须显式使用可创建类型或创建辅助方法。

 ...
 ...

按值编组

如果要按值将 JavaScript 数组传递给托管代码,则目标 .NET Framework 属性或输入参数的类型必须不是 ScriptObject。然后,您必须使用createcreateObject帮助器方法之一显式强制将 JavaScript 数组转换为 .NET Framework 列表或数组类型。

(“字典和自定义类型”有一对几乎相同的子句)

是否有我遗漏的东西,或者文档是否矛盾?简单对象和数组的转换是否是隐式和自动的?如果是这样,后面的条款适用于哪些对象?如果不是,为什么在隐式转换的原始 Javascript 类型中提到它们?

4

1 回答 1

1

1) 答案在文章中。你没有引用的一段。

JavaScript 字典将按值递归封送到目标 .NET Framework 类型。Silverlight 将使用 JSON 序列化程序将 JavaScript 字典反序列化为符合标准的 .NET Framework 自定义类型或字典。

2)因为自定义类型可能在已知类型中。如果您是这样的异端,.net 确保您可以随意绕过转换。我说异端,好像是这样,为什么首先使用json?=)

就让它滑吧。。

于 2013-01-20T17:39:01.667 回答