【问题标题】:How can I fix this Error: not all code paths return a value如何解决此错误:并非所有代码路径都返回值
【发布时间】:2021-05-04 04:09:26
【问题描述】:

我的项目有 2 部分客户端和服务器端。在服务器端,我有控制器,它需要查询和命令。我把它们都放了,我的命令有一个处理程序,但是在我完成我的处理程序之后它会抛出一个错误,说:并非所有代码路径都返回一个值。 这是我的处理程序:

     public Task<ReturnCreateDataQuery> Handle(CreateCompletedActCommand request, CancellationToken cancellationToken)
    {
        var party = _dbContext.Parties.SingleOrDefault(t => t.PartyCode == request.PartyCode);
        if (party == null) throw new Exception("");

        if ((bool)request.ResonableType)
        {

            var departmentText = request.DepartmentIds.Any() ? string.Join(",", request.DepartmentIds.Distinct().OrderBy(t => t)) : string.Empty;
            var cartableActs = new List<CartableActModel>();

            var cartable = new CartableStateModel()
            {

                ClaimId = request.ClaimId,
                CreationDate = DateTime.Now,
                StatusCode = (int)Enumeration.StateType.Compeleted,
                PreviouseCartableStateId = request.CartableStateId
            };

            var cartableAct = new CartableActCompleteModel()
            {
                ActCode = (int)Enumeration.ActType.CompleteCustomerData,
                ActorId = party.PartyId,
                CartableStateId = cartable.CartableStateId,
                ChangeDate = DateTime.Now,
                ClaimSubjectId = request.ClaimSubjectId,
                ClaimType = request.ClaimType,
                Departments = departmentText,
                ExpertPartyId = request.ExpertPartyId,
                ResonableType = request.ResonableType,
                SubClaimSubjectId = request.SubClaimSubjectId,
                CompletedDescription = request.CompletedDescription,
            };

            var attachments = request.Attachments.Select(t => new ActAttachmentModel
            {
                AttachmentContent = t.AttachmentContent,
                ActAttachmentId = cartableAct.CartableActId,
                ActId = cartableAct.CartableActId,
                CreationDate = DateTime.Now,
                Creator = party.PartyId,
                FileExtension = t.FileExtension,
                Title = t.Title,
                MimeType = t.MimeType
            }).ToList();

            cartableAct.ActAttachments = attachments;

            cartableActs.Add(cartableAct);

            cartable.CartableActs = cartableActs;

            _dbContext.Cartables.Add(cartable); 
            _dbContext.SaveChangesAsync(cancellationToken);
        }
        else
        {
            var cartableActs = new List<CartableActModel>();
            var cartable = new CartableStateModel()
            {
                ClaimId = request.ClaimId,
                CreationDate = DateTime.Now,
                StatusCode = (int)Enumeration.StateType.Finished,

            };

            var cartableAct = new CartableActSatisficationModel()
            {
                ActCode = (int)Enumeration.ActType.SatisficationCustomer,
                ActorId = party.PartyId,
                CartableStateId = cartable.CartableStateId,
                ChangeDate = DateTime.Now,
                IsSatisfy = false,
                SatisfyLevel = "1",
            };

            var attachments = request.Attachments.Select(t => new ActAttachmentModel
            {
                AttachmentContent = t.AttachmentContent,
                ActAttachmentId = cartableAct.CartableActId,
                ActId = cartableAct.CartableActId,
                CreationDate = DateTime.Now,
                Creator = party.PartyId,
                FileExtension = t.FileExtension,
                Title = t.Title,
                MimeType = t.MimeType
            }).ToList();

            var outBox = new OutBoxModel
            {
                SentType = "SMS",
                ClaimId = request.ClaimId,
                IsSent = false,
                PartyCode = request.PartyCode,
                IsCustomer = true

            };

            cartableAct.ActAttachments = attachments;

            cartableActs.Add(cartableAct);

            cartable.CartableActs = cartableActs;

            _dbContext.Cartables.Add(cartable);
            _dbContext.OutBoxes.Add(outBox);
            _dbContext.SaveChangesAsync(cancellationToken);
        }
    }

我不知道如何解决这个错误我搜索了很多来源但我不明白如果你知道应该返回哪个值我会感谢你。

【问题讨论】:

  • 您的代码中没有任何部分返回ReturnCreateDataQuery 类型。如果你真的不需要返回任何东西。像这样使函数返回无效。 public Task Handle(...)
  • 另外,如果你要返回一个任务,那么通常还会出现一个“异步”修饰符,加上一个或多个调用是“等待”的

标签: c# asp.net asp.net-core server blazor


【解决方案1】:

更改方法标题

 public async Task Handle(CreateCompletedActCommand request, CancellationToken cancellationToken)
    {
....your code
}

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 1970-01-01
    • 2013-07-01
    • 2014-04-16
    • 2015-02-07
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多