我很难理解为什么我在下面的代码中遇到代码合同违规行为:
// servicequery is of type System.Data.Services.Client.DataServiceQuery<DividendData>
// therefore implements IQueryable
var serviceQuery = CreateDataService().DividendData;
Contract.Assume(serviceQuery != null);
Contract.Assume(serviceQuery.Any());
var data = serviceQuery
.Select(div => new {I = 2});
违规行为是:CodeContracts: requires unproven: constructor != null
正确分配。
如果我将此代码更改为以下内容,则违规将消失:
class resulttype
{
public int I { get; set; }
}
var serviceQuery = CreateDataService().DividendData;
Contract.Assume(serviceQuery != null);
Contract.Assume(serviceQuery.Any());
var data = serviceQuery
.Select(div => new resulttype() {I = 2});
我的问题是'为什么?'。
答案 0 :(得分:0)
似乎需要一个实际的课程作为合同。你能做的是:
var serviceQuery = CreateDataService().DividendData;
Contract.Assume(serviceQuery != null);
Contract.Assume(serviceQuery.Any());
var data = serviceQuery.ToList().Select(div => {I = 2});
无论如何,你在那里做的很奇怪......