关于递归方法设计的建议

Fix*_*xer 1 c# recursion design-patterns

我有一个Task类,它可以报告任务完成所需的时间.但是,该类可以包含相同类型的子任务.

public class Task
 {
    public string Name{get; set;}
    public DateTime Start {get; set;}
    public DateTime Finish {get; set;}
    public List<Task> SubTasks {get; set;}
    public TimeSpan GetDuration()
    {
        return Finish - Start;
    }

    public TimeSpan GetTotalDuration()
    {
        //How?
    }
 }
Run Code Online (Sandbox Code Playgroud)

SubTasks可以有多个级别,现在没有逻辑限制.我不确定如何设计负责转移子任务并累积TimeSpan值的方法?

任何优雅的想法赞赏?

谢谢

Jac*_*ope 8

我只是这样做:

public TimeSpan GetTotalDuration()
{
    if (SubTasks != null)
        return GetDuration() + SubTasks.Sum(t => t.GetTotalDuration()); 

    return GetDuration();
}
Run Code Online (Sandbox Code Playgroud)

使用Linq.

编辑:处理SubTasks为空的情况(通过Kristof的答案).