ITree.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Masuit.Tools.Models;
  4. /// <summary>
  5. /// 树形实体接口
  6. /// </summary>
  7. /// <typeparam name="T"></typeparam>
  8. public interface ITree<T> : ITreeParent<T>, ITreeChildren<T>
  9. {
  10. /// <summary>
  11. /// 名字
  12. /// </summary>
  13. string Name { get; set; }
  14. }
  15. /// <summary>
  16. /// 带子级的树形实体接口
  17. /// </summary>
  18. /// <typeparam name="T"></typeparam>
  19. public interface ITreeChildren<T>
  20. {
  21. /// <summary>
  22. /// 子级
  23. /// </summary>
  24. ICollection<T> Children { get; set; }
  25. }
  26. /// <summary>
  27. /// 带父节点的树形实体接口
  28. /// </summary>
  29. /// <typeparam name="T"></typeparam>
  30. public interface ITreeParent<T>
  31. {
  32. /// <summary>
  33. /// 父节点
  34. /// </summary>
  35. T Parent { get; set; }
  36. }
  37. /// <summary>
  38. /// 树形实体(值类型主键)
  39. /// </summary>
  40. /// <typeparam name="T"></typeparam>
  41. /// <typeparam name="TKey"></typeparam>
  42. public interface ITreeEntity<T, TKey> : ITreeChildren<T> where TKey : struct, IComparable
  43. {
  44. /// <summary>
  45. /// 主键id
  46. /// </summary>
  47. public TKey Id { get; set; }
  48. /// <summary>
  49. /// 父级id
  50. /// </summary>
  51. public TKey? ParentId { get; set; }
  52. }
  53. /// <summary>
  54. /// 树形实体(字符串主键)
  55. /// </summary>
  56. /// <typeparam name="T"></typeparam>
  57. public interface ITreeEntity<T> : ITreeChildren<T>
  58. {
  59. /// <summary>
  60. /// 主键id
  61. /// </summary>
  62. public string Id { get; set; }
  63. /// <summary>
  64. /// 父级id
  65. /// </summary>
  66. public string ParentId { get; set; }
  67. }