2011-08-19 1 views
2

크로스 커팅 요구 사항을 지정하는 방법이 있습니까? 예를 들어 클래스 수준의 계약으로 인스턴스 변수가 호출 될 때마다 인스턴스 변수가 null이 아니도록 요구할 수 있습니까? 실패?계약서에 코드의 크로스 커팅 문제를 코드화 할 수 있습니까?

코드 계약을 처음 접했고 Feb 4, 2011 Code Contracts User Manual (PDF)MSDN docs을 감추고 있었지만 크로스 커팅 기능에 관한 내용은 전혀 나에게 알려지지 않았습니다. 아마도 코드 계약에없는 기능을 찾고있을 것입니다.

+2

멋진 이탤릭입니다. – darvids0n

+0

감사합니다. @ darvids0n, 킥을 위해 제목의 "aspects"를 제목의 "concern"으로 변경하여 더욱 완벽하게 만들었습니다. –

답변

0

난 당신이 § 2.3

[ContractInvariantMethod] 
private void ObjectInvariant() 
{ 
    Contract.Invariant (this.y >= 0); 
    Contract.Invariant (this.x > this.y); 
} 

, "개체의 불변"매뉴얼에서

라고 찾고있는 그들은 각 공용 메서드 호출 후 을 확인 것이라고 생각합니다.
적절하게 캡슐화 된 값은 각 호출 이전과 동일해야합니다.

+0

그건 재미 있어요. 내 public 메소드 중 하나가 호출 될 때 계약 메소드에 액세스하지 못하는 것 같아서''throw new Exception ("fyi - contract area") 라인을 삽입하여 테스트를했기 때문에 더 많은 시간을 소비해야 할 것입니다. ObjectInvariant() 메소드를 호출합니다. –

+0

후손을 위해 ContractInvariantMethod http://www.codeproject.com/KB/cs/CodeContracts_Pt2.aspx를 사용하는 코드 프로젝트에서이 추가 자습서와 예제를 찾았습니까? –

+0

@ 존 : 설정의 문제입니다 (전체가 필요합니다). 그러나 이것은 일반적인 방법이 아니며 처리되거나 실행되지 않습니다. 당신의'던지기'시험은 작동하지 않을 것이다, 다만 계약의 한을 끊는 시도하십시오. –