-2

我有FormTemplateGroup

public class FormTemplateGroup : BaseEntity, IIerarhycal<FormTemplateGroup>
{
    public virtual string Name { get; set; }
    public virtual bool Active { get; set; }
    public virtual FormTemplateGroup Parent { get; set; }
    public virtual IList<FormTemplateGroup> Children { get; set; }
}

我有一些使用FormTemplateGroup类的方法

public FormTemplateGroup GetFormTemplateGroup(int id)
    {
        var formTemplateGroup =
            FormTemplateGroupRepository.Query().FirstOrDefault(ftg => ftg.Id == id);

        return formTemplateGroup;
    }

    public FormTemplate GetFormTemplate(int id)
    {
        var formTemplateGroup = GetFormTemplateGroup(id);

        var formTemplate =
                FormTemplateRepository.Query().FirstOrDefault(ft => ft.Group.Id == formTemplateGroup.Id);

        return formTemplate;
    }

    public bool checkForChild(IList<FormTemplateGroup> groups)
    {
        foreach (FormTemplateGroup g in groups)
        {
            if (GetFormTemplate(g.Id) != null) return false;
            if (g.Children.Count > 0)
            {
                return checkForChild(g.Children);
            }
            return true;
        }
    }

但在方法中checkForChild我得到一个错误

错误 1 ​​'Arg.BI.BL.Services.Dictionaries.FormTemplateGroupService.checkForChild(System.Collections.Generic.IList)':并非所有代码路径都返回值 D:\svn\ARG_BI\Sources\trunk\Arg.BI\Arg .BI.BL\Services\Dictionaries\FormTemplateGroupService.cs 82 21 Arg.BI.BL

如何解决?

4

4 回答 4

4

in checkForChild,如果 in 中没有项目groupsforeach则不会执行。而且您的方法将永远不会返回。

return false在之后添加一个foreach,如下所示:

public bool checkForChild(IList<FormTemplateGroup> groups)
{
    foreach (FormTemplateGroup g in groups)
    {
        if (GetFormTemplate(g.Id) != null) return false;
        if (g.Children.Count > 0)
        {
            return checkForChild(g.Children);
        }
        return true;
    }
    return false;
}
于 2013-10-22T10:35:01.917 回答
2

您需要在 foreach 之外返回。

于 2013-10-22T10:34:26.977 回答
2

如果方法中的groups参数CheckForChild为空,则没有返回语句。

在循环之后返回一个布尔值foreach,或者抛出一个异常。

于 2013-10-22T10:34:48.640 回答
2

你的checkForChild方法应该在循环之后返回一些东西。如果你不这样做,并且没有FormTemplateGroups in groups,编译器将不知道要返回什么。

于 2013-10-22T10:34:53.853 回答