Tôi đã viết ContractInvariantMethod
cho lớp hợp đồng dữ liệu và mọi thứ hoạt động tốt ở phía máy khách, tuy nhiên khi đối tượng thuộc loại này được gửi đến dịch vụ của tôi và Deserializer dữ liệu cố gắng deserialize nó, kiểm tra hợp đồng mã cách và ném ContractException
, nói bất biến thất bại. Lý do là trong constructor (mặc định) của lớp, tôi thiết lập các thuộc tính để thỏa mãn bất biến, nhưng dường như constructor không được gọi khi đối tượng đang được deserialized. có giải pháp cho vấn đề này không?Làm thế nào để thực hiện các hợp đồng mã làm việc với deserialization các hợp đồng dữ liệu?
đây là lớp hợp đồng dữ liệu của tôi:
[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);
}
}
là bạn có thể chỉ cho chúng ta một ví dụ về mã của bạn? Nó có thể giúp. –
tôi đã thay đổi câu hỏi để bao gồm mã. – Arash