小编Ara*_*ash的帖子

如何使代码合同与数据合同的反序列化一起工作?

我已经写了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);
 }
}
Run Code Online (Sandbox Code Playgroud)

.net wcf datacontract code-contracts

7
推荐指数
1
解决办法
409
查看次数

标签 统计

.net ×1

code-contracts ×1

datacontract ×1

wcf ×1