1

単純な Javascript オブジェクトと配列を "マネージド型" (簡潔にするために、C#) オブジェクトに変換するための変換メカニズムについて、私は少し混乱しています。

これに関するマイクロソフトの記事の最初のセクションでは、変換が暗黙的かつ自動であると述べています (または暗示しているようです)。

  • JavaScript 配列は object[] に変換されます。
  • JavaScript 辞書は Dictionary に変換されます。

createただし、後続のセクションでは、変換のためのヘルパーとcreateObject関数の必要性について言及しているようです。

配列:

配列型とリスト型

デフォルトは、JavaScript からマネージ コードへの明示的な値によるマーシャリングです。管理された入力パラメーターへの自動 JSON シリアル化はサポートされていません。代わりに、作成可能な型または create ヘルパー メソッドを明示的に使用する必要があります。

 ...
 ...

値によるマーシャリング

JavaScript 配列をマネージド コードに値渡しする場合は、対象の .NET Framework プロパティまたは入力パラメーターを ScriptObject 以外の型にする必要があります。次に、create またはcreateObjectヘルパー メソッドのいずれかを使用して、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 に答える