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

Dan*_*iel 4 c# code-contracts

这是接口的合同类的一部分.

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

public void Save() {
    Contract.Ensures(!this.IsDirty()); //WARNING
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

它正在产生这个警告:

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

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

Fed*_*gui 6

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

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

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

    //...
}
Run Code Online (Sandbox Code Playgroud)