"아마도 null 참조에 메소드를 호출"C# 코드 계약 내가 코드 계약을 조사하고 있는데 나는이 같은 빌더 패턴을 구현하고있어
:이 오류와 함께Possibly calling a method on a null reference. Do you expect that NWP.PointServices.Domain.Model.People.PersonCaution+Builder.WithCautionType(System.String) returns non-null?
if (row != null)
{
var builder = new PersonCaution.Builder()
.WithCautionType((string)row.Element("PersonCaution__Type1G"))
.WithRemarks((string)row.Element("PersonCaution__Remarks"));
if (builder != null)
{
personCautions.Add(builder.Build());
}
}
그러나, 코드 계약 정적 검사가 실패 빌더 클래스를 사용
Q. Contract.Ensures 사후 조건이 정적 검사기를 만족시킬 것이라고 생각했지만 그렇지 않습니다. 오류를 제거하려면 어떻게해야합니까? 대단히 고마워.
참고. Builder 클래스가 호출하는 코드와 별도의 프로젝트에있는 경우에만 문제점을 볼 수 있습니다.
상세 정보 :
- 비주얼 스튜디오 프로페셔널 2015 14.0.25424.00 업데이트 3 개
- 모든 프로젝트는 닷넷을 비주얼 스튜디오 확장을 통해 설치 4.6.1
- 코드 계약을 대상 V 1.8
- 프로젝트의 다른 (작성자가 아닌) 영역에서 코드 계약을 성공적으로 사용하고 있습니다.
글쎄, 나는 업데이트 3과 코드 계약서에 있지 않다. 단지 모든 것을 확인했지만 또한 (빌더! = null) 평가가 중복된다는 경고를주었습니다. 빌더가 항상 null이 아니기 때문입니다. 나는 이것에 관해 당신을 도울 수 없다고 생각합니다. –
@ Sergey.quixoticaxis.Ivanov - 감사합니다. Builder 클래스가 호출하는 코드와 별도의 프로젝트에있는 경우에만이 문제점을 볼 수 있다는 위의 노트를 추가했습니다. 코드 계약 설정은 각 프로젝트마다 동일합니다. – Howard
안녕하세요. 나는 빌더 클래스를 다른 dll로 옮겼고 나에게도 여전히 잘 작동한다. -/ 빌더 클래스의 정의로 어셈블리에 대한 Contract Reference Assembly = Build를 사용 했는가? –