Napisałem ContractInvariantMethod
dla klasy kontraktu danych i wszystko działa świetnie po stronie klienta, jednak gdy obiekt tego typu jest wysyłany do mojej usługi, a Deserializator kontraktu danych próbuje deserializować to, sprawdzanie kontraktu kodu dostaje się sposób i rzuca ContractException
, mówiąc niezmiennik nie powiodło się. Powód jest taki, że w (domyślnym) konstruktorze klasy ustawiam właściwości, aby spełnić wymagania niezmiennika, ale najwyraźniej konstruktor nie zostanie wywołany, gdy obiekt jest deserializowany. jest rozwiązanie tego problemu?Jak sprawić, by umowy kodowe działały z deserializacją umów dotyczących danych?
tutaj jest moja klasa kontrakt dane:
[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);
}
}
jesteś w stanie pokazać nam przykład kodu? To może pomóc. –
Zmieniłem pytanie, aby dołączyć kod. – Arash