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值的方法?
任何优雅的想法赞赏?
谢谢
我只是这样做:
public TimeSpan GetTotalDuration()
{
if (SubTasks != null)
return GetDuration() + SubTasks.Sum(t => t.GetTotalDuration());
return GetDuration();
}
Run Code Online (Sandbox Code Playgroud)
使用Linq.
编辑:处理SubTasks为空的情况(通过Kristof的答案).