using Serein.Library.Utils; using System; using System.Collections.Generic; using System.Text; namespace Serein.Library { /// /// 基础功能 /// [DynamicFlow(Name ="[基础功能]")] public static class FlowBaseLibrary { /// /// 对象透传,直接返回入参的值 /// /// /// [NodeAction(NodeType.Action, "对象透传")] public static object TransmissionObject(object value) => value; /// /// 键值对组装,将入参的值与名称组装成一个字典对象 /// /// /// /// /// [NodeAction(NodeType.Action, "键值对组装")] public static Dictionary DictSet(string argNames, params object[] value) { var names = argNames.Split(';'); if(value.Length != names.Length) { throw new ArgumentException("参数名称数量与入参数量不一致"); } var count = value.Length; var dict = new Dictionary(); for (int i = 0; i < count; i++) { dict[names[i]] = value[i]; } return dict; } /// /// 数组组装,将入参的值组装成一个数组对象 /// /// /// [NodeAction(NodeType.Action, "数组组装")] public static object[] ArraySet(params object[] value) { return value; } /// /// 输出到控制台,使用SereinEnv.WriteLine方法输出信息 /// /// /// [NodeAction(NodeType.Action, "输出")] public static object[] Console(params object[] value) { foreach (var item in value) { SereinEnv.WriteLine(InfoType.INFO, item.ToString()); } return value; } /// /// 逻辑分支,根据布尔值选择返回的值,如果布尔值为true则返回t_value,否则返回f_value /// /// /// /// /// [NodeAction(NodeType.Action, "逻辑选择")] public static object LogicalBranch([NodeParam(IsExplicit = false)]bool @bool, object t_value, object f_value) { return @bool ? t_value : f_value; } /// /// 文本拼接,将多个文本值拼接成一个字符串,支持换行符和制表符的特殊处理 /// /// /// [NodeAction(NodeType.Action, "文本拼接")] public static string TextJoin(params object[] value) { 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(); } /// /// 动态构建对象,将字典中的键值对转换为一个动态对象,支持指定类名和打印结果 /// /// /// /// /// [NodeAction(NodeType.Action, "键值对动态构建对象")] public static object CreateDynamicObjectOfDict(Dictionary dict, string classTypeName = "newClass_dynamic", bool IsPrint = false) { if (!DynamicObjectHelper.TryResolve(dict, classTypeName, out var result)) { System.Console.WriteLine("赋值过程中有错误,请检查属性名和类型!"); } else { if (IsPrint) { System.Console.WriteLine("创建完成,正在打印结果"); DynamicObjectHelper.PrintObjectProperties(result); } } return result; } } }