如何设置纯度的异常属性?

时间:2014-11-26 19:58:37

标签: c# .net code-contracts

我有类似下面的课程,我想只在x方法中更改Foo而不是其他属性。我不能像以下示例那样使用[Pure],因为它会锁定所有属性:

public class Test
{
    private int x,y,z; //number of these properties is large

    [Pure]
    public void Foo()
    {
        //only x must be allowed to change
    }
}

我不希望对x以外的所有其他属性使用类似的内容:

Contract.Ensures(Contract.OldValue<int>(y) == y);
Contract.Ensures(Contract.OldValue<int>(z) == z);
...//and for other large number of properties

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

不幸的是,找不到Contracts的标准方法。

但是你可以用这种方式(这种方式有一些限制):

    public class Test
    {
        public int x, y, z;//....

        public void Foo()
        {
            x = FooBody();
        }

        [Pure]
        private int FooBody()
        {
            int value = x;
            //work with value as x
            return value;
        }
    }

答案 1 :(得分:0)

似乎在Contract类中没有为此目的实现的方法。