【发布时间】:2011-08-07 11:07:18
【问题描述】:
我已经为数据契约类编写了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);
}
}
【问题讨论】:
-
您能向我们展示您的代码示例吗?它可能会有所帮助。
-
我更改了问题以包含代码。
标签: .net wcf datacontract code-contracts