public PluginTreeNode(Type type) { _type = type; _instance = (IPlugin)Activator.CreateInstance(_type); IPluginData[] data = _instance.GetData(); foreach (IPluginData item in data) { if (item.Children == null) { Nodes.Add(new LeafTreeNode(item)); } else { int i = Nodes.Add(new BranchTreeNode(item)); var newNode = Nodes[i]; foreach (IPluginData childItem in item.Children) { if (childItem.Children == null) { newNode.Nodes.Add(new LeafTreeNode(childItem)); } else { newNode.Nodes.Add(new BranchTreeNode(childItem)); } } } } Text = DisplayName; }