'检测到没有[Pure]的方法调用'......但Pure就在那里

时间:2014-01-24 18:00:34

标签: c# code-contracts

这是接口合约类的一部分。

[Pure]
public bool IsDirty() {
    throw new NotImplementedException();
}

public void Save() {
    Contract.Ensures(!this.IsDirty()); //WARNING
    throw new NotImplementedException();
}

它正在发出此警告:

  

警告CC1036:CodeContracts:在方法'EntityObjectContract.Save'的合同中检测到没有[Pure]的方法'IEntityObject.IsDirty'的调用。

...即使Pure属性存在。我试过重建,重新打开Visual Studio,但每次都有相同的结果。知道怎么摆脱这个警告吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:6)

看起来它正在寻找IEntityObject.IsDirty()方法中的属性。

在我看来,您需要将此属性添加到界面中的方法声明?

public interface IEntityObject
{
    [Pure]
    bool IsDirty();

    //...
}