我有类似下面的课程,我想只在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
有没有办法做到这一点?
答案 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
类中没有为此目的实现的方法。