From acf0b87ad04e6a748570cfe12e4786cbc7bfd3de Mon Sep 17 00:00:00 2001
From: fengjiayi <12821976+ning_xi@user.noreply.gitee.com>
Date: Fri, 18 Jul 2025 23:34:08 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=97=A0=E9=80=89?=
=?UTF-8?q?=E5=AE=9A=E7=9B=AE=E6=A0=87=E8=8A=82=E7=82=B9=E7=9A=84FlowCall?=
=?UTF-8?q?=E8=8A=82=E7=82=B9=E6=97=B6=EF=BC=8C=E4=BC=9A=E6=8A=9B=E5=87=BA?=
=?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E6=83=85=E5=86=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Library/FlowNode/ParameterDetails.cs | 5 +++--
.../Operation/ChangeNodeConnectionOperation.cs | 16 +++++++++++-----
2 files changed, 14 insertions(+), 7 deletions(-)
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(