私はデータコントラクトクラスのContractInvariantMethod
を書かれているし、このタイプのオブジェクトは、私のサービスに送信し、データ契約デシリアライザは、それをデシリアライズしようとすると、コードの契約のチェックがで取得されたとき、すべてがしかし、クライアント側で素晴らしい作品途中でContractException
を投げ、不変式が失敗したと言っています。 その理由は、クラスの(デフォルト)コンストラクタで、私は不変を満たすようにプロパティを設定されていることが、オブジェクトが直列化復元されたときに明らかにコンストラクタが呼び出されません。 これには解決策がありますか?ここデータコントラクトのデシリアライズでコードコントラクトを動作させる方法は?
は私のデータコントラクトクラスです:
[DataContract]
public class DataContractClass
{
public DataContractClass()
{
this.Field1= this.Field2= -1;
}
[DataMember]
public int Field1 {get; set;}
[DataMember]
public int Field2 {get; set;}
[ContractInvariantMethod]
private void Invariants()
{
Contract.Invariant(this.Field1== -1 || this.Field2== -1);
}
}
あなたは私達にあなたのコードの例を示すことができますか?それは助けるかもしれません。 –
質問を変更してコードを追加しました。 – Arash