私は木を持っています。
class TreeNode {
public TreeNode(string name, string description) {
Name = name;
Description = description;
}
string Name { get; set; }
string Description { get; set; }
public List<TreeNode> Children = new List<TreeNode>();
}
単体テストの目的で大きなものを作成したいと思います。私は本当に物をDRYに保ちたいです。
説明のために、私のツリーには次の構造があるとします
親、説明 子 1、desc1 孫 1、desc1 子 2、desc2
エレガントで保守しやすい方法でツリーを作成するにはどうすればよいでしょうか?
このコードは非常に繰り返しが多く、エラーが発生しやすいと思います。
var parent = new TreeNode("Parent", "desc");
var child1 = new TreeNode("Child 1", "desc1");
var child2 = new TreeNode("Child 2", "desc2");
var grandchild1 = new TreeNode("Grandchild 1", "desc1");
parent.Children.Add(child1);
parent.Children.Add(child2);
child1.Children.Add(grandchild1);
編集
私は最終的にDSLアプローチを行いました:
デモテストはここにあります。
実装はこちらです。
ビルダーと単純な DSL を使用します。