2025-04-24 18:31:27 +08:00

77 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.Infrastructure.Trees
{
/// <summary>
/// 树节点上下文
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <typeparam name="TOuter">输出实体类型</typeparam>
public interface ITreeContext<T, TOuter>
{
/// <summary>
/// 数据源
/// </summary>
List<TreeNode<TOuter>> Data { get; set; }
/// <summary>
/// 当前节点
/// </summary>
TreeNode<TOuter> Current { get; set; }
/// <summary>
/// 分隔符
/// </summary>
string Separator { get; set; }
/// <summary>
/// 设置树节点列表数据源
/// </summary>
/// <typeparam name="TKey">键类型</typeparam>
/// <param name="collection">数据源</param>
/// <param name="textSelector">显示文本选择器</param>
/// <param name="idSelector">ID选择器</param>
/// <param name="parentIdSelector">父ID选择器</param>
/// <returns></returns>
ITreeContext<T, TOuter> SetItems<TKey>(List<T> collection, Func<T, string> textSelector,
Func<T, TKey> idSelector, Func<T, TKey> parentIdSelector);
/// <summary>
/// 设置树节点列表数据源
/// </summary>
/// <typeparam name="TKey">键类型</typeparam>
/// <param name="collection">数据源</param>
/// <param name="textSelector">显示文本选择器</param>
/// <param name="idSelector">ID选择器</param>
/// <param name="parentIdSelector">父ID选择器</param>
/// <param name="convertSelector">转换选择器</param>
/// <returns></returns>
ITreeContext<T, TOuter> SetItems<TKey>(List<T> collection, Func<T, string> textSelector,
Func<T, TKey> idSelector, Func<T, TKey> parentIdSelector, Func<T, TOuter> convertSelector);
/// <summary>
/// 获取当前树节点
/// </summary>
/// <returns></returns>
TreeNode<TOuter> GetTreeNode();
/// <summary>
/// 获取树节点
/// </summary>
/// <returns></returns>
List<TreeNode<TOuter>> GetTrees();
}
/// <summary>
/// 树节点上下文
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
public interface ITreeContext<T> : ITreeContext<T, T>
{
}
}