내가 경고를 보고 여러 가지 방법이 "코드 계약하기 : 증명이 필요합니다! 생성자를 NULL ="는 C# CodeContracts 정적 검사가 활성화 된 경우.'CodeContracts를 진단하려면 unproven이 필요합니다. 생성자! = null'?
이 특정 방법은 계약을 선언하지 않고, 어떻게 어떤 방법으로 호출되지 않습니다. 내가 경고를 두 번 클릭하면
는 시각적 인 스튜디오는 IQueryable<TEntity>
객체를 인스턴스화 라인에 저를 지시합니다. 여기서 문제가되는 방법 중 하나입니다 :
public List<IStudentTermData> GetAllActive()
{
using (IObjectContext context = ContextFactory.Create())
{
var studentTermDataSet = context.ObjectSet<IStudentTermData>();
var studentSet = context.ObjectSet<IStudent>();
// Helps out CodeContracts static checker
if(studentSet == null || studentTermDataSet == null)
return new List<IStudentTermData>();
// Selecting the warning brings me to the next line
IQueryable<IStudentTermData> query =
from studentTermData in studentTermDataSet
join student in studentSet
on studentTermData.StudentId equals student.Id
where (student.Active) select studentTermData;
return query.ToList();
}
}
나는이 경고가 발생하지 않는 몇 가지 다른 매우 유사한 방법이 있고, 나는 그들이 LINQ 조인을 사용하지 않는 나타났습니다. 내 LINQ 쿼리가 () 개체로 분해되어이 메시지가 나타나면이 경고가 발생하여 Join()
이 호출 된 것 같습니다.
어떤이는 CodeContracts 정적 검사와 함께해야 하는가? 또한, 왜 검사기가 불평하고, 그것을 해결하기 위해 할 수 있습니까?
ToList()를 호출하기 전에 null 평등에 대한 쿼리를 확인할 수 있습니까? –
시도해 보았습니다.하지만 Resharper는 표현식'(query! = null)'은 항상 true로 평가됩니다. 나는 Resharper의 충고를 무시하고 질의에 대한 null check로 다시 작성하기도했지만 아무런 효과가 없었다. – Rob
제목 앞에 "C#"을 붙이지 마십시오. 그것이 바로 태그입니다. –