66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace CustomOpenAddins.Models
|
|
{
|
|
/// <summary>
|
|
/// 二级开项
|
|
/// </summary>
|
|
public class SubItem : BaseItem
|
|
{
|
|
public SubItem(string name, PrimaryItem primary) : base(name)
|
|
{
|
|
Primary = primary;
|
|
DetailCategories = new HashSet<DetailItem>();
|
|
}
|
|
|
|
public DetailItem this[int index]
|
|
{
|
|
get => DetailCategories.ElementAt(index);
|
|
}
|
|
public PrimaryItem Primary { get; set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder($"<子项>{Name};");
|
|
if (DetailCategories.Count == 0)
|
|
{
|
|
return sb.Append("无;").ToString();
|
|
}
|
|
foreach (var item in DetailCategories)
|
|
{
|
|
sb.AppendLine($"{item}");
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
|
|
public HashSet<DetailItem> DetailCategories { get; private set; }
|
|
|
|
public DetailItem AddDetail(string detailName)
|
|
{
|
|
DetailItem detail = new DetailItem(detailName, this);
|
|
if (DetailCategories == null)
|
|
{
|
|
DetailCategories = new HashSet<DetailItem>();
|
|
}
|
|
DetailCategories.Add(detail);
|
|
return detail;
|
|
}
|
|
public void AddDetails(List<DetailItem> details)
|
|
{
|
|
if (DetailCategories == null)
|
|
{
|
|
DetailCategories = new HashSet<DetailItem>();
|
|
}
|
|
details.ForEach(x =>
|
|
{
|
|
x.SubItem = this;
|
|
DetailCategories.Add(x);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|