code-contracts

    2

    1답변

    어떤 아이디어가 무슨 뜻입니까?이 Require.IsTrue(value == null || type.IsInstanceOfType(value), "value", "The specified value must be an instance of the specified type."); UPD : [ContractArgumentValidato

    2

    2답변

    그래서 우리는 스코어 가드 또는 비슷한 목적으로 코드 송수신 유효성 및/또는 내부 상태 불변성을 확인하기 위해 C# 코드 계약과 유사하게 조사하고 있습니다. 일부 개체가 일관성없는 상태로 남게되는 정상적인 처리 도중에 예기치 않은 조건/예외가 발생하는 특정 경우에는 범위 보호 기능을 수행하기 위해 어떤 메커니즘을 사용해야합니까? 우리가 기능에서 뛰어 내릴

    1

    1답변

    기존의 큰 프로젝트가 있고 코드 계약을이 프로젝트에 통합하려고한다고 가정하십시오. 기존 코드는 if-null-then-throw 논리를 사용합니다. 주어진 조건의 경우, 문서에서 어셈블리 모드를 사용자 지정 인수 유효성 검사로 설정하는 것이 좋습니다. 나는 다음과 같은 클래스가 있습니다 class A { protected virtual void

    2

    3답변

    다음은 인터페이스 계약에서 발췌 한 것입니다. 내 질문은 : 이전 방법은 후자의 방법의 사전 조건을 반복해야합니까? 계약이 공개되어 있으므로 반복을 생략해도됩니까? 이 경우 단순히 null이 아닌 검사 일 뿐이지 만 런타임에 동일한 검사가 반복 될 때 많은 코드가 반복되고 성능이 저하되는 상황을 상상할 수 있습니다. public int CommandCons

    1

    1답변

    Contract.Result는 성가신 일이지만 상황에 따라 적절하지 않을 수 있습니다. 아래 매뉴얼에서 추출을 참조하십시오. 방법 돌아 메소드의 리턴 값을 T에있어서의 복귀 형으로 대체 된 식 Contract.Result<T>() 통해 언급 될 수있는 사후 내 값. 컴파일러가 형식을 추론 할 수 없으면 명시 적으로 지정해야합니다. 예를 들어 C# 컴파일러는

    2

    1답변

    프로젝트 계약의 코드 계약 탭에서 "계약 참조 어셈블리"를 "빌드"로 설정하면 출력 폴더의 "CodeContracts"하위 폴더에 두 개의 추가 파일 ("MyAssembly"라는 어셈블리)이 생성됩니다. MyAssembly.Contracts.dll MyAssembly.Contracts.pdb 첫 번째 파일에는 계약 메타 데이터가 모두 포함되어 있으며

    0

    2답변

    나는 다음과 같은 방법이 있습니다 public static bool IsBetween<T>(this IComparable<T> value, T lowerBound, T upperBound) where T : IComparable<T> { Contract.Requires<>(value != null); Contract.Requir

    5

    2답변

    C# 코드 계약서의 멋진 데모를 보았습니다. 코드 코드 계약을 구현하기 시작할 수 있습니다. 이미 제 코드를 작성했으면 좋겠습니다. 어디서부터 시작하나요? 나는 데모에서 인쇄 된 자료를 빼앗아하지 못했습니다. 어떤 제안 된 독서인가? 코드 계약을 맺은 초보자를위한 제안 사항은 무엇입니까? 미리 도움을 주셔서 감사합니다.

    3

    2답변

    가 어떻게 ObjectId로 표시 객체가? 존재해야한다는 다음과 같은 인터페이스에서 Invoke 방법에 전제 조건을 배치합니까 interface IDeleteObjectCommand { Guid ObjectId { get; } void Invoke(); } 는 시도 # 1 이미 명령은 IObjectExistsCommand을 불렀다 객

    3

    1답변

    일반 인터페이스 계약과 관련된 문제가 있습니다. 나는 하나의 전제 조건 (Requires 계약)을 가진 하나의 메소드를 가진 두 개의 일반적인 인터페이스를 가지고있다. 첫 번째 인터페이스에 대한 계약은 예상대로 작동합니다. 전제 조건이 구현 클래스로 전파되고 인터페이스 메소드가 코드 계약 편집기 확장을 통해 적절하게 장식됩니다. 두 번째 인터페이스에 대한