2025-07-28 20:04:56 +08:00
|
|
|
|
using Serein.Library.Utils;
|
2024-11-04 23:30:52 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2024-12-09 22:57:06 +08:00
|
|
|
|
using System.Text;
|
2024-11-04 23:30:52 +08:00
|
|
|
|
|
|
|
|
|
|
namespace Serein.Library
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 基础功能
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[DynamicFlow(Name ="[基础功能]")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static class FlowBaseLibrary
|
2024-11-04 23:30:52 +08:00
|
|
|
|
{
|
2025-07-30 21:15:07 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 对象透传,直接返回入参的值
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-09 21:49:26 +08:00
|
|
|
|
[NodeAction(NodeType.Action, "对象透传")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static object TransmissionObject(object value) => value;
|
2025-06-01 12:21:38 +08:00
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 键值对组装,将入参的值与名称组装成一个字典对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="argNames"></param>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
/// <exception cref="ArgumentException"></exception>
|
|
|
|
|
|
|
2024-11-04 23:30:52 +08:00
|
|
|
|
[NodeAction(NodeType.Action, "键值对组装")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static Dictionary<string, object> DictSet(string argNames, params object[] value)
|
2024-11-04 23:30:52 +08:00
|
|
|
|
{
|
2025-07-28 12:16:29 +08:00
|
|
|
|
var names = argNames.Split(';');
|
|
|
|
|
|
if(value.Length != names.Length)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new ArgumentException("参数名称数量与入参数量不一致");
|
|
|
|
|
|
}
|
|
|
|
|
|
var count = value.Length;
|
2024-11-04 23:30:52 +08:00
|
|
|
|
var dict = new Dictionary<string, object>();
|
|
|
|
|
|
for (int i = 0; i < count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
dict[names[i]] = value[i];
|
|
|
|
|
|
}
|
|
|
|
|
|
return dict;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 数组组装,将入参的值组装成一个数组对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-11-04 23:30:52 +08:00
|
|
|
|
[NodeAction(NodeType.Action, "数组组装")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static object[] ArraySet(params object[] value)
|
2024-11-04 23:30:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
return value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 输出到控制台,使用SereinEnv.WriteLine方法输出信息
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-11-04 23:30:52 +08:00
|
|
|
|
[NodeAction(NodeType.Action, "输出")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static object[] Console(params object[] value)
|
2024-11-04 23:30:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in value)
|
|
|
|
|
|
{
|
2024-11-08 17:30:51 +08:00
|
|
|
|
SereinEnv.WriteLine(InfoType.INFO, item.ToString());
|
2024-11-04 23:30:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
return value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 逻辑分支,根据布尔值选择返回的值,如果布尔值为true则返回t_value,否则返回f_value
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="bool"></param>
|
|
|
|
|
|
/// <param name="t_value"></param>
|
|
|
|
|
|
/// <param name="f_value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
[NodeAction(NodeType.Action, "逻辑选择")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static object LogicalBranch([NodeParam(IsExplicit = false)]bool @bool,
|
2025-05-30 11:53:33 +08:00
|
|
|
|
object t_value,
|
|
|
|
|
|
object f_value)
|
2024-12-18 00:05:42 +08:00
|
|
|
|
{
|
|
|
|
|
|
return @bool ? t_value : f_value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 文本拼接,将多个文本值拼接成一个字符串,支持换行符和制表符的特殊处理
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
|
2024-12-09 22:57:06 +08:00
|
|
|
|
[NodeAction(NodeType.Action, "文本拼接")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static string TextJoin(params object[] value)
|
2024-12-09 22:57:06 +08:00
|
|
|
|
{
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
foreach (var item in value)
|
|
|
|
|
|
{
|
|
|
|
|
|
var tmp = item.ToString();
|
|
|
|
|
|
if (tmp == "\\n")
|
|
|
|
|
|
{
|
|
|
|
|
|
sb.Append(Environment.NewLine);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (tmp == "\\t")
|
|
|
|
|
|
{
|
|
|
|
|
|
sb.Append('\t');
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
sb.Append(tmp);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return sb.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 动态构建对象,将字典中的键值对转换为一个动态对象,支持指定类名和打印结果
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="dict"></param>
|
|
|
|
|
|
/// <param name="classTypeName"></param>
|
|
|
|
|
|
/// <param name="IsPrint"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-12-09 22:57:06 +08:00
|
|
|
|
|
|
|
|
|
|
[NodeAction(NodeType.Action, "键值对动态构建对象")]
|
2025-07-28 12:16:29 +08:00
|
|
|
|
public static object CreateDynamicObjectOfDict(Dictionary<string, object> dict,
|
2024-12-09 22:57:06 +08:00
|
|
|
|
string classTypeName = "newClass_dynamic",
|
|
|
|
|
|
bool IsPrint = false)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!DynamicObjectHelper.TryResolve(dict, classTypeName, out var result))
|
|
|
|
|
|
{
|
2025-07-28 12:16:29 +08:00
|
|
|
|
System.Console.WriteLine("赋值过程中有错误,请检查属性名和类型!");
|
2024-12-09 22:57:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (IsPrint)
|
|
|
|
|
|
{
|
2025-07-28 12:16:29 +08:00
|
|
|
|
System.Console.WriteLine("创建完成,正在打印结果");
|
2024-12-09 22:57:06 +08:00
|
|
|
|
DynamicObjectHelper.PrintObjectProperties(result);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-11-04 23:30:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|