2

DataContractSerializer.NET 3.5 では、シリアル化の動作を からに切り替えるカスタム属性 ([NetDataMember] など) を作成したいと考えていNetDataContractSerializerます。

基本的に、A以下に示すようなクラスの場合

[DataContract]
class A
{
  [DataMember]
  public int SimpleProperty { get; set; }

  [Transcient]
  public IBar ComplexProperty { get; set; }
}

DataContractSerializerデフォルトのように動作するシリアライザーを取得したいと思いますが、NetDataContractSerializerでマークされたプロパティではオーバーライドされます[NetDataMember]

このような動作を実現するシリアライザーを設計する方法はありますか?

4

1 に答える 1

6

これを行うための "すぐに使える" 方法は WCF にはありませんが、多くの非常に賢い人々が既にこの問題に取り組んでいます。

NetDataContractSerializer に関するAaron Skonnard のブログ投稿を確認してください。彼は、属性としてデータ コントラクトに設定できる動作を示しています。

[NetDataContractFormat] 

サービス インターフェイス (すべてのメソッド) または単一のメソッドで、その呼び出しに NetDataContractSerializer を使用します。これは、データ コントラクトではなく、操作またはサービスごとに定義する必要があります。

于 2009-12-11T22:06:56.453 に答える