如何为纯度设置异常属性

本文关键字:设置 异常 属性 | 更新日期: 2023-09-27 18:32:13

我有像波纹管这样的类,我只想让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

有什么办法可以做到这一点吗?

如何为纯度设置异常属性

不幸的是,没有找到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;
        }
    }

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