private void SetupPluginTreeNode(PluginTreeNode currentNode, PluginTreeNode needSetNode, List <string> pathList, int index) { if (index >= pathList.Count) { return; } if (currentNode.ChildNodes.Keys.Contains(pathList[index])) { if (index == pathList.Count - 1) { currentNode.SetPlugin(needSetNode.Plugin); } SetupPluginTreeNode(currentNode.ChildNodes[pathList[index]], needSetNode, pathList, ++index); } else { PluginTreeNode newNode = new PluginTreeNode(); currentNode.ChildNodes.Add(pathList[index], newNode); if (index == pathList.Count - 1) { newNode.SetPlugin(needSetNode.Plugin); } SetupPluginTreeNode(newNode, needSetNode, pathList, ++index); } }
public void SetupPluginTreeNode(PluginTreeNode treeNode) { List <string> pathList = CommonToolkit.PathParse(treeNode.Plugin.PluginBase.Path); SetupPluginTreeNode(_rootNode, treeNode, pathList, 0); }