1. 移除了FlipflopContext,统一流程API

2. Script项目脚本修复了 RawString 原始字符串存在的问题
3. Script使用了ValueNode统一了值类型节点,为后续扩展更多的值类型做准备
4. TypeHelper.ToTypeOfString()方法中添加了部分值类型的"Type[]”与“List<Type>”的显式定义,用于脚本在类型中定义数组成员
5. Script项目脚本默认挂载的json方法拆分为jsonObj(String)与jsonStr(Object)以支持序列化与反序列化
6. 项目保存为dnf项目文件时,将不再保存名称为”Default"并且没有节点的画布,避免重复保存时默认画布增多。
This commit is contained in:
fengjiayi
2025-08-02 22:04:13 +08:00
parent 93747ce7fd
commit 79af278b70
26 changed files with 398 additions and 149 deletions

View File

@@ -70,7 +70,6 @@ namespace Serein.Library.Utils
};
/// <summary>
/// 字面量转为对应类型
/// </summary>
@@ -84,11 +83,13 @@ namespace Serein.Library.Utils
return Type.GetType(valueStr);
}
#region
if (valueStr.Equals("bool", StringComparison.OrdinalIgnoreCase))
{
return typeof(bool);
}
#region
else if (valueStr.Equals("sbyte", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(SByte), StringComparison.OrdinalIgnoreCase))
@@ -167,6 +168,170 @@ namespace Serein.Library.Utils
}
#endregion
#endregion
#region Array数组类型
if (valueStr.Equals("bool" + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(bool[]);
}
#region
else if (valueStr.Equals("sbyte" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(SByte) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(SByte[]);
}
else if (valueStr.Equals("short" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Int16) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Int16[]);
}
else if (valueStr.Equals("int" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Int32) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Int32[]);
}
else if (valueStr.Equals("long" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Int64) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Int64[]);
}
else if (valueStr.Equals("byte" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Byte) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Byte[]);
}
else if (valueStr.Equals("ushort" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(UInt16) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(UInt16[]);
}
else if (valueStr.Equals("uint" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(UInt32) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(UInt32[]);
}
else if (valueStr.Equals("ulong" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(UInt64) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(UInt64[]);
}
#endregion
#region
else if (valueStr.Equals("float" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Single) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Single[]);
}
else if (valueStr.Equals("double" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Double) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Double[]);
}
#endregion
#region
else if (valueStr.Equals("decimal" + "[]", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(Decimal) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(Decimal[]);
}
#endregion
#region
else if (valueStr.Equals(nameof(String) + "[]", StringComparison.OrdinalIgnoreCase))
{
return typeof(String[]);
}
#endregion
#endregion
#region List<>
if (valueStr.Equals("list<bool>", StringComparison.OrdinalIgnoreCase))
{
return typeof(List<bool>);
}
#region
else if (valueStr.Equals("list<sbyte>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<SByte>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<SByte>);
}
else if (valueStr.Equals("list<short>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Int16>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Int16>);
}
else if (valueStr.Equals("list<int>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Int32>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Int32>);
}
else if (valueStr.Equals("list<long>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Int64>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Int64>);
}
else if (valueStr.Equals("list<byte>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Byte>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Byte>);
}
else if (valueStr.Equals("list<ushort>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<UInt16>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<UInt16>);
}
else if (valueStr.Equals("list<uint>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<UInt32>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<UInt32>);
}
else if (valueStr.Equals("list<ulong>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<UInt64>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<UInt64>);
}
#endregion
#region
else if (valueStr.Equals("list<float>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Single>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Single>);
}
else if (valueStr.Equals("list<double>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Double>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Double>);
}
#endregion
#region
else if (valueStr.Equals("list<decimal>", StringComparison.OrdinalIgnoreCase)
|| valueStr.Equals(nameof(List<Decimal>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<Decimal>);
}
#endregion
#region
else if (valueStr.Equals(nameof(List<String>), StringComparison.OrdinalIgnoreCase))
{
return typeof(List<String>);
}
#endregion
#endregion
else
{
throw new ArgumentException($"无法解析的字面量类型[{valueStr}]");