private void Button_AddPin_Click(object sender, RoutedEventArgs e) { var param = CSParam as MethodInvoke_DelegateControlConstructionParams; if (param.DelegateMethodInfo == null) { InitDelegateMethodInfo(); } var paramInfo = new MethodParamInfoAssist(); paramInfo.FieldDirection = System.CodeDom.FieldDirection.In; paramInfo.IsParamsArray = false; paramInfo.ParameterType = typeof(object); paramInfo.ParamName = ""; param.InputParmas.Add(paramInfo); var inputParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = param.CSType, HostNodesContainer = param.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.Delegate, ParamInfo = paramInfo, }; var child = new MethodInvokeParameterControl(inputParam); child.RemoveButton.Click += (object removeBtnSender, RoutedEventArgs removeBtnE) => { var noUse = RemoveInParam(child); }; AddChildNode(child, StackPanel_InputPins); }
protected void SetParameters(List <MethodParamInfoAssist> paramInfos) { if (paramInfos == null) { return; } mParamsPanel?.Children.Clear(); foreach (var paramInfo in paramInfos) { CodeGenerateSystem.Base.BaseNodeControl pc = null; if (paramInfo.ParameterType.IsSubclassOf(typeof(System.Delegate))) { var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams() { CSType = mCSParam.CSType, HostNodesContainer = mCSParam.HostNodesContainer, ConstructParam = this.NodeName, ConstructType = MethodInvokeNode.enParamConstructType.MethodOverride, ParamInfo = paramInfo, }; pc = new MethodInvoke_DelegateControl(csParam); } else { if (paramInfo.IsParamsArray) { var csParam = new ParamParameterControl.ParamParameterConstructionParams() { CSType = mCSParam.CSType, HostNodesContainer = mCSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.MethodOverride, ParamInfo = paramInfo, }; pc = new ParamParameterControl(csParam); } else { var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = mCSParam.CSType, HostNodesContainer = mCSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.MethodOverride, ParamInfo = paramInfo, }; pc = new MethodInvokeParameterControl(csParam); } } //pc.SetToolTip(EngineNS.Rtti.AttributeHelper.GetCustomAttributePropertyValue(paramInfo, typeof(DescriptionAttribute).FullName, "Description", false)); AddChildNode(pc, mParamsPanel); } }
protected void SetParameters(string[] paramInfos, EngineNS.ECSType csType) { foreach (var info in paramInfos) { var tempSplits = info.Split(':'); if (tempSplits.Length > 2) { switch (tempSplits[2]) { case "Ref": case "Out": tempSplits[1] += "&"; break; } } CodeGenerateSystem.Base.BaseNodeControl pc = null; var type = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(tempSplits[1]); if (type != null && type.IsSubclassOf(typeof(System.Delegate))) { var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams() { CSType = csType, HostNodesContainer = this.HostNodesContainer, ConstructParam = info + ":" + this.NodeName, ConstructType = MethodInvokeNode.enParamConstructType.MethodOverride, }; pc = new MethodInvoke_DelegateControl(csParam); } else { var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = csType, HostNodesContainer = this.HostNodesContainer, ConstructParam = info, ConstructType = MethodInvokeNode.enParamConstructType.MethodOverride, }; pc = new MethodInvokeParameterControl(csParam); } AddChildNode(pc, mParamsPanel); } }
//void ReturnCustom_AddParam(CustomMethodInfo.FunctionParam funcParam) public async Task OnAddedOutParam(CodeDomNode.CustomMethodInfo.FunctionParam funcParam) { await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var csParam = CSParam as ReturnCustomConstructParam; MethodParamInfoAssist retValue; if (funcParam.ParamType.Type.IsByRef) { var typefullname = funcParam.ParamType.Type.FullName.Substring(0, funcParam.ParamType.Type.FullName.Length - 1); var type = funcParam.ParamType.Type.Assembly.GetType(typefullname); //funcParam.ParamType = new VariableType(type, funcParam.ParamType.CSType); retValue = new MethodParamInfoAssist(); retValue.FieldDirection = System.CodeDom.FieldDirection.Out; retValue.IsParamsArray = false; retValue.ParameterType = type; retValue.ParamName = funcParam.ParamName; BindingOperations.SetBinding(this, CodeDomNode.CustomMethodInfo.FunctionParam.ParamNameProperty, new Binding("ParamName") { Source = retValue, Mode = BindingMode.TwoWay }); } else { retValue = funcParam.CreateParamInfoAssist(System.CodeDom.FieldDirection.Out); } var pm = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.ReturnCustom, ParamInfo = retValue, }; var pc = new MethodInvokeParameterControl(pm); funcParam.OnParamTypeChanged -= pc.UpdateParamType; funcParam.OnParamTypeChanged += pc.UpdateParamType; pc.OnUpdateParamTypeAction = OnUpdateChildParamType; AddChildNode(pc, mParamsPanel); }
public async Task OnInsertOutParam(int index, CodeDomNode.CustomMethodInfo.FunctionParam funcParam) { await EngineNS.Thread.AsyncDummyClass.DummyFunc(); var csParam = CSParam as ReturnCustomConstructParam; var pm = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.ReturnCustom, ParamInfo = funcParam.CreateParamInfoAssist(System.CodeDom.FieldDirection.Out), }; var pc = new MethodInvokeParameterControl(pm); funcParam.OnParamTypeChanged -= pc.UpdateParamType; funcParam.OnParamTypeChanged += pc.UpdateParamType; pc.OnUpdateParamTypeAction = OnUpdateChildParamType; InsertChildNode(index, pc, mParamsPanel); }
// 这里不做参数在PropertyGrid中的显示设置,防止类似Ref参数被无意设置 protected void SetParameters(MethodInfoAssist methodInfo) { var cpInfos = new List <CustomPropertyInfo>(); mParamsPanel?.Children.Clear(); var param = CSParam as ReturnConstructParam; // return if ((param.MethodInfo.ReturnType != typeof(void)) && (param.MethodInfo.ReturnType != typeof(System.Threading.Tasks.Task))) { var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.Return, ParamInfo = new MethodParamInfoAssist() { FieldDirection = System.CodeDom.FieldDirection.Out, IsParamsArray = false, ParameterType = param.MethodInfo.ReturnType, ParamName = "Return", }, }; var ctrl = new MethodInvokeParameterControl(csParam); AddChildNode(ctrl, mParamsPanel); if (Program.IsTypeValidInPropertyGridShow(param.MethodInfo.ReturnType)) { var cpInfo = Program.GetFromParamInfo(csParam.ParamInfo); cpInfos.Add(cpInfo); } } foreach (var methodParam in methodInfo.Params) { if (methodParam.FieldDirection != System.CodeDom.FieldDirection.Out) { continue; } CodeGenerateSystem.Base.BaseNodeControl pc = null; if (methodParam.ParameterType.IsSubclassOf(typeof(System.Delegate))) { var csParam = new MethodInvoke_DelegateControl.MethodInvoke_DelegateControlConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = this.NodeName, ConstructType = MethodInvokeNode.enParamConstructType.Return, ParamInfo = methodParam, }; pc = new MethodInvoke_DelegateControl(csParam); } else { if (methodParam.IsParamsArray) { var csParam = new ParamParameterControl.ParamParameterConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.Return, ParamInfo = methodParam, }; pc = new ParamParameterControl(csParam); } else { var csParam = new MethodInvokeParameterControl.MethodInvokeParameterConstructionParams() { CSType = CSParam.CSType, HostNodesContainer = CSParam.HostNodesContainer, ConstructParam = "", ConstructType = MethodInvokeNode.enParamConstructType.Return, ParamInfo = methodParam, }; pc = new MethodInvokeParameterControl(csParam); if (Program.IsTypeValidInPropertyGridShow(methodParam.ParameterType)) { var cpInfo = Program.GetFromParamInfo(methodParam); cpInfos.Add(cpInfo); } } } AddChildNode(pc, mParamsPanel); } CreateTemplateClass(cpInfos); }