using System;
using System.Collections.Generic;
namespace Masuit.Tools.Models;
/// 
/// 树形实体接口
/// 
/// 
public interface ITree : ITreeParent, ITreeChildren
{
    /// 
    /// 名字
    /// 
    string Name { get; set; }
}
/// 
/// 带子级的树形实体接口
/// 
/// 
public interface ITreeChildren
{
    /// 
    /// 子级
    /// 
    ICollection Children { get; set; }
}
/// 
/// 带父节点的树形实体接口
/// 
/// 
public interface ITreeParent
{
    /// 
    /// 父节点
    /// 
    T Parent { get; set; }
}
/// 
/// 树形实体(值类型主键)
/// 
/// 
/// 
public interface ITreeEntity : ITreeChildren where TKey : struct, IComparable
{
    /// 
    /// 主键id
    /// 
    public TKey Id { get; set; }
    /// 
    /// 父级id
    /// 
    public TKey? ParentId { get; set; }
}
/// 
/// 树形实体(字符串主键)
/// 
/// 
public interface ITreeEntity : ITreeChildren
{
    /// 
    /// 主键id
    /// 
    public string Id { get; set; }
    /// 
    /// 父级id
    /// 
    public string ParentId { get; set; }
}