2014-11-26 1 views
3

나는 벨로우즈와 같은 수업을 가지고 있으며, 방법으로 변경하고 다른 속성은 변경하지 말아야합니다. x.순도에 대한 예외 속성을 설정하는 방법은 무엇입니까?

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 

이 있는가가 모든 속성을 잠금 때문에, 예를 다음과 같이 [Pure]을 사용할 수 없습니다 이 일을하는 어떤 방법이라도?

답변

0

Contract 클래스에는이 목적으로 구현 된 메서드가없는 것으로 보입니다.

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; 
     } 
    } 
+0

까다로운 것 같다! 나는 그것에 생각할 것이다! –