/// <summary> /// 生成指定插件节点对应的目标对象。 /// </summary> /// <param name="node">指定要构建的插件树节点。</param> /// <param name="parameter">调用者需要传递给构建器的参数对象。</param> /// <param name="build">由调用者指定的构建委托,如果为空则使用对应的构建器的构建动作。</param> /// <returns>返回构建成功的目标,如果指定的<paramref name="node"/>类型不是<see cref="PluginTreeNodeType.Builtin"/>则返回节点的<see cref="PluginTreeNode.Value"/>属性值。</returns> public object Build(PluginTreeNode node, object parameter, Action <Builders.BuilderContext> build) { if (node == null) { throw new ArgumentNullException("node"); } if (_status != PluginTreeStatus.Loaded) { throw new InvalidOperationException(); } return(node.Build(parameter, build)); }
private void EnsureNodes(PluginTreeNode node) { if (node == null) { return; } if (node.NodeType == PluginTreeNodeType.Builtin) { if (!((Builtin)node.Value).IsBuilded) { node.Build(); } return; } foreach (var child in node.Children) { this.EnsureNodes(child); } }