2009-04-30 3 views
0

SilverlightとWCFサービス間を移動するには、データがかなり制限されています。だから私はいくつかのdatacontractsを設定しています。 DTOなどのオーバーヘッドを必要とせずに、同じクラスを使用してクライアント側で限られたデータ検証に使用できることを期待していました。SilverlightのDeSerialized属性

私はこのような契約の何かを持っている:私は、オブジェクトをデシリアライズするとき

[DataContract] 
class MyObject 
{ 
    private String _id; 
    [DataMember] 
    public String ID 
     { 
      get 
      { 
       return _id; 
      } 
      set 
      { 
       _id = value; 
       DoStuff(); 
      } 
} 

今すぐセッターが実行されます。これは良いプライベート変数_idを設定します。しかし、私はDoStuff()をデシリアライズ時に実行したくありません。

私は[OnDeserializing]属性と[OnDeserialized]属性を使用したいと考えていました。私はsetterで実行されるものを制御するために使うことができるboolフラグを定義できました。これは実際にサーバー側で機能しますが、Silverlightにはこれらの属性はありません。

提案がありますか?

答えて

0

ロジックを実行するために、これらのクラスの使用をオーバーロードしないことをお勧めします。これはサービスデータ契約です。生成されるSilverlightプロキシクラスには触れないでください。デシリアライズが完了した後に呼び出す他のクラスに検証ロジックを配置することをお勧めします。それ以外の場合は、エラーが実際にデータに含まれているときにシリアル化コードにエラーが発生する可能性があります。

+0

私が言ったように、私は移動するための多くのデータがありません。私は、レイヤーを介してデータを渡すだけで、オブジェクトを複数回定義する必要がないようにしようとしています。私はADO.NETデータセットが欠けています... –