3

動的クエリ + 部分シリアル化を実行したいと考えています。

次のようなリソースがあるとします。

public class Unicorn
{
    public string Id { get; set; }
    public string Color { get; set; }
    public int Size { get; set; }
    public DateTime BirthDate { get; set; }
}

そして、ユーザーは次のような部分的な RESTful リクエストを作成します:

GET /unicorn/{id}/?fields=id,color

XML が要求された場合の結果は次のようになります。

<Unicorn>
  <Id>10</Id>
  <Color>Purple</Color>
</Unicorn>

そしてJsonの場合

{"Unicorn":
  {"Id":10,
  "Color":"Purple"}
}

私は現在、クエリの部分に取り組んでいます (式ツリーはとても強力です ^^)

しかし、シリアライゼーションの部分には多くのオプションがありますが、どれも満足できるものではありません. ご覧のとおり、シリアル化されたプロパティは動的に指定されるため、属性の装飾はおそらく適切ではありません。

何を使用しますか?その理由は? 後でこの投稿を編集して、あなたの提案を共有します。

4

1 に答える 1

3

Unicorn クラスを変更して、nullable を使用し、メンバーに EmitDefaultValue = false のタグを付けることを確認します。

   [DataContract]
   public class Unicorn {   

    [DataMember (EmitDefaultValue=false)] 
    public string Id { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public string Color { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public int? Size { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public DateTime? BirthDate { get; set; } 
} 

動的 LINQ を使用して選択を行う >>動的 LINQ の例を参照してください。あなたがWCF RESTアプリケーションを実行していると仮定しています。この場合、これはあなたの例に従ってシリアル化されます。

于 2012-07-06T13:24:51.850 に答える