using System; using System.Collections.Generic; using System.Linq; namespace ZeroLevel.Services.Trees { public class Tree : ITree { public Tree() { } public Tree(ITree other) { if (other == null!) throw new ArgumentNullException(nameof(other)); this._rootNodes = other.RootNodes.Select(a => (ITreeNode)a.Clone()).ToList(); } private readonly List _rootNodes = new List(); public IEnumerable RootNodes { get { return _rootNodes; } } public ITreeNode Append(string name, object tag) { var root = new TreeNode(name, tag); _rootNodes.Add(root); return root; } public static ITree Create() { return new Tree(); } public static ITree Create(ITree other) { return new Tree(other); } } }