async System.Threading.Tasks.Task OpenGraph() { var param = CSParam as MethodInvoke_DelegateControlConstructionParams; var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; var data = new CodeGenerateSystem.Base.SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + param.ParamInfo.ParamName + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.ShowSubNodesContainer(data); if (data.IsCreated) { await InitializeLinkedNodesContainer(); } else { await ResetNodesMethodInfo(); } }
async System.Threading.Tasks.Task InitializeLinkedNodesContainer() { var param = CSParam as MethodInvoke_DelegateControlConstructionParams; var assist = this.HostNodesContainer.HostControl as Macross.NodesControlAssist; if (mLinkedNodesContainer == null) { var data = new CodeGenerateSystem.Base.SubNodesContainerData() { ID = Id, Title = HostNodesContainer.TitleString + "/" + param.ParamInfo.ParamName + ":" + this.Id.ToString(), }; mLinkedNodesContainer = await assist.GetSubNodesContainer(data); if (!data.IsCreated) { return; } } // 读取graph var tempFile = assist.HostControl.GetGraphFileName(assist.LinkedCategoryItemName); var linkXndHolder = await EngineNS.IO.XndHolder.LoadXND(tempFile, EngineNS.Thread.Async.EAsyncTarget.AsyncEditor); bool bLoaded = false; if (linkXndHolder != null) { var linkNode = linkXndHolder.Node.FindNode("SubLinks"); var idStr = Id.ToString(); foreach (var node in linkNode.GetNodes()) { if (node.GetName() == idStr) { await mLinkedNodesContainer.Load(node); bLoaded = true; break; } } } if (bLoaded) { await ResetNodesMethodInfo(); } else { InitDelegateMethodInfo(); var csParam = new CodeDomNode.MethodCustom.MethodCustomConstructParam() { CSType = param.CSType, HostNodesContainer = mLinkedNodesContainer, ConstructParam = "", MethodInfo = param.DelegateMethodInfo, IsShowProperty = false, }; var node = mLinkedNodesContainer.AddOrigionNode(typeof(CodeDomNode.MethodCustom), csParam, 0, 0) as CodeDomNode.MethodCustom; node.IsDeleteable = false; var retCSParam = new CodeDomNode.ReturnCustom.ReturnCustomConstructParam() { CSType = param.CSType, HostNodesContainer = mLinkedNodesContainer, ConstructParam = "", MethodInfo = param.DelegateMethodInfo, ShowPropertyType = ReturnCustom.ReturnCustomConstructParam.enShowPropertyType.ReturnValue, }; var retNode = mLinkedNodesContainer.AddOrigionNode(typeof(CodeDomNode.ReturnCustom), retCSParam, 300, 0) as CodeDomNode.ReturnCustom; retNode.IsDeleteable = false; } }