1
아래 코드는 ccrewrite를 폭발시킵니다! 아이디어? 당신이 ActualClass을 주석 경우 은 BTW, ccrewrite 사전에 ...CodeContracts : 개체 참조가 개체 인스턴스로 설정되지 않은 상태에서 ccrewrite가 실패합니다.
[ContractClass(typeof(TestContracts))]
interface ITestInterface
{
bool IsStarted { get; set; }
void Begin();
}
class ActualClass : ITestInterface
{
public bool IsStarted { get; set; }
public void Begin()
{
this.IsStarted = true;
}
}
[ContractClassFor(typeof(ITestInterface))]
class TestContracts : ITestInterface
{
ITestInterface Current { get; set; }
private TestContracts()
{
Current = this;
}
#region ITestInterface Members
bool ITestInterface.IsStarted
{
get; set;
}
void ITestInterface.Begin()
{
Contract.Requires(!Current.IsStarted);
Contract.Ensures(Current.IsStarted);
}
감사 성공!