ジョンソン
大衆に知られているこのようなクールなジョークがあります:
![3763158824_e2f57810c4 [1] 3763158824_e2f57810c4[1]](https://habrastorage.org/getpro/habr/post_images/b1a/457/19d/b1a45719d32f79409d0f45a0f9e74a3d.jpg)
JSONとアプリケーション
まあ、通常、アプリケーションでJSONでオブジェクトを受信する場合、サポートのためにインフラストラクチャを準備する必要があります(たとえば、 DataContractJsonSerializerとこのようなソリューションを使用する)。 ただし、これには開発者からかなりの時間がかかります。 この点で、JSONメカニズムを.NET 4.0の動的機能のレールに置き、それを使って作業することを楽しみたいという情熱的な要望がありました;)
ダイナミックオブジェクト
DynamicObject-実行時にオブジェクトの動的な動作を取得できる継承元の単純なクラスを提供します。 このクラスから継承し、そのメソッドの一部を再定義すると、これに必要なすべての基本的なロジックが実装されます。
DLRホスティングやその他の魅力に興味があり、質問についてもう少し詳しく知りたい場合は、スライドとスライド( こちらとこちら )をご覧ください 。
開発へ
JSONを使用する際に不便を感じないように、 JMS Newtonの JSON.NETと呼ばれるソリューションを使用(マージおよび参照)することをお勧めします。このプロジェクトは無料で、.NETスタック内でJSONを使用するためのすべての基本要件を満たしていますLINQを含む)。
はい。さらに、Visual Studio 2010 Beta 1などの.NET 4.0b1で動作するIDEが必要です(ちなみに、 #developはそれほど遅れていません )。
次のようなアプリケーションを作成します。
string input = @"{CPU: 'Intel', Drives: ['DVD read/writer',
" "500 gigabyte hard drive" " ]}" ;
dynamic computer = new DynamicJSON(input);
* This source code was highlighted with Source Code Highlighter .
そして、コンピューター上で見つかったプロパティを確認してください。
>> computer.CPU
"Intel"
>> computer.Drives
[
"DVD read/writer" ,
"500 gigabyte hard drive"
]
>> computer.Drives[0]
"DVD read/writer"
* This source code was highlighted with Source Code Highlighter .
これまでのところ、DynamicJSONが何であるかわからないことを考えると、珍しいことは何もありません。
using Newtonsoft.Json.Linq;
public class DynamicJSON : DynamicObject
{
private JObject _data;
public DynamicJSON( string data)
{
_data = JObject.Parse(data);
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = _data[binder.Name];
return true ;
}
}
* This source code was highlighted with Source Code Highlighter .
そして、この例の作業に必要なのはこれだけです。そのようなことに非常に満足しているので、同様の方法を決定に使用することをお勧めします。
誰かが今後のDLRのトピックに興味を持っている場合、私はより深くあなたに伝えることができます、フィードバックを残す