diff --git a/Library/FlowNode/ParameterDetails.cs b/Library/FlowNode/ParameterDetails.cs index 61af606..0d6a26c 100644 --- a/Library/FlowNode/ParameterDetails.cs +++ b/Library/FlowNode/ParameterDetails.cs @@ -35,8 +35,8 @@ namespace Serein.Library /// /// 是否为显式参数(固定值/表达式) - /// 如果为 true ,则使用UI输入的文本值作为入参数据(过程中会尽可能转为类型需要的数据)。 - /// 如果为 false ,则根据 ArgDataSourceType 调用相应节点的GetFlowData()方法,获取返回的数据作为入参数据。 + /// 如果为 true ,则使用UI输入的文本值作为入参数据。 + /// 如果为 false ,则在当前流程上下文中,根据 ArgDataSourceNodeGuid 查找到对应节点,并根据 ArgDataSourceNodeGuid 判断如何获取其返回的数据,以此作为入参数据。 /// [PropertyInfo(IsNotification = true)] private bool _isExplicitData ; @@ -50,6 +50,7 @@ namespace Serein.Library /// /// 方法入参若无相关转换器特性标注,则无需关注该变量。该变量用于需要用到枚举BinValue转换器时,指示相应的入参变量需要转为的类型。 /// + [Obsolete("转换器特性将在下一个大版本中移除")] [PropertyInfo] private Type _explicitType ; diff --git a/NodeFlow/Model/Operation/ChangeNodeConnectionOperation.cs b/NodeFlow/Model/Operation/ChangeNodeConnectionOperation.cs index 49a8c77..930fed6 100644 --- a/NodeFlow/Model/Operation/ChangeNodeConnectionOperation.cs +++ b/NodeFlow/Model/Operation/ChangeNodeConnectionOperation.cs @@ -172,6 +172,11 @@ namespace Serein.NodeFlow.Model.Operation #region 类型检查 bool checkTypeState = true; List toPds = new List(); + if(ToNode.MethodDetails.ParameterDetailss is null) + { + SereinEnv.WriteLine(InfoType.WARN, "目标节点没有入参参数,无法进行连接"); + return false; + } if (ToNode.MethodDetails.ParameterDetailss.Length > 0) { var fromNoeReturnType = fromNode.MethodDetails.ReturnType; @@ -460,17 +465,18 @@ namespace Serein.NodeFlow.Model.Operation NodeConnectChangeEventArgs.ConnectChangeType.Remove)); }); } - - ToNode.MethodDetails.ParameterDetailss[ArgIndex].ArgDataSourceNodeGuid = FromNode.Guid; - ToNode.MethodDetails.ParameterDetailss[ArgIndex].ArgDataSourceType = ConnectionArgSourceType; + var toNodePd = ToNode.MethodDetails.ParameterDetailss[ArgIndex]; + toNodePd.ArgDataSourceNodeGuid = FromNode.Guid; + toNodePd.ArgDataSourceType = ConnectionArgSourceType; FromNode.NeedResultNodes[type].Add(ToNode); - + toNodePd.IsExplicitData = false; if (ToNode.ControlType == NodeControlType.Script) { // 脚本节点入参确定/改变来源时,更改对应的入参数据类型 - ToNode.MethodDetails.ParameterDetailss[ArgIndex].DataType = FromNode.MethodDetails.ReturnType; + toNodePd.DataType = FromNode.MethodDetails.ReturnType; } + await TriggerEvent(() => { flowEnvironmentEvent.OnNodeConnectChanged(