TreeModel.cs 603 B

123456789101112131415161718192021222324252627
  1. using System;
  2. using System.Collections.Generic;
  3. namespace VCommon.DataModel
  4. {
  5. public class TreeModel<T>
  6. {
  7. public T Node { get; set; }
  8. public IReadOnlyCollection<TreeModel<T>> Children { get; set; }
  9. public TreeModel()
  10. {
  11. }
  12. public TreeModel(T node, IReadOnlyCollection<TreeModel<T>> children)
  13. {
  14. Node = node;
  15. Children = children;
  16. }
  17. public void Traverse(Action<T> visitor)
  18. {
  19. visitor(Node);
  20. foreach (var child in Children) child.Traverse(visitor);
  21. }
  22. }
  23. }