如何通过简单的对象和数组?

时间:2013-01-20 15:57:30

标签: c# javascript .net silverlight marshalling

我对将简单的Javascript对象和数组转换为“托管类型”(简称C#)对象的转换机制感到有点困惑。

Microsoft article concerning this的第一部分(或似乎暗示)转换是隐式和自动的:

  
      
  • JavaScript数组转换为object []。
  •   
  • JavaScript词典将转换为词典。
  •   

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

阵列:

  

数组和列表类型

     

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

 ...
 ...
     

按价值编组

     

如果您想按值将JavaScript数组传递给托管代码,那么   目标.NET Framework属性或输入参数必须键入为   ScriptObject以外的东西。然后,您必须使用创建之一   或 createObject 辅助方法,以明确强制转换   JavaScript数组到.NET Framework列表或数组类型。

(“字典和自定义类型”的条款几乎相同)

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

1 个答案:

答案 0 :(得分:1)

1)文章中提到了答案。你没引用的段落。

  

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

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

让它滑动..