我对将简单的Javascript对象和数组转换为“托管类型”(简称C#)对象的转换机制感到有点困惑。
Microsoft article concerning this的第一部分(或似乎暗示)转换是隐式和自动的:
- JavaScript数组转换为object []。
- JavaScript词典将转换为词典。
但是,后续部分似乎提到了帮助create
和createObject
函数进行转换的必要性:
阵列:
数组和列表类型
默认情况下,从JavaScript到托管代码的显式按值封送。 不支持对托管输入参数进行自动JSON序列化。 相反,您必须明确使用可创建类型或创建辅助方法。
... ...
按价值编组
如果您想按值将JavaScript数组传递给托管代码,那么 目标.NET Framework属性或输入参数必须键入为 ScriptObject以外的东西。然后,您必须使用创建之一 或 createObject 辅助方法,以明确强制转换 JavaScript数组到.NET Framework列表或数组类型。
(“字典和自定义类型”的条款几乎相同)
我有什么遗漏,或文件是否矛盾?是否对简单对象和数组进行隐式和自动转换?如果是这样,后面的条款适用于哪些对象?如果没有,为什么在隐式转换的原始Javascript类型中提到它们?
答案 0 :(得分:1)
1)文章中提到了答案。你没引用的段落。
JavaScript字典将按值递归封送到 目标.NET Framework类型。 Silverlight将使用JSON 序列化程序从JavaScript字典反序列化到 符合.NET Framework自定义类型或字典。
2)因为自定义类型可能在已知类型内。 如果你是这样的异教徒,.net确保你可以随意绕过转换。我说异教徒,好像是这样,为什么首先使用json? =)
让它滑动..