Files
serein-flow/Library/Entity/MethodDetails.cs

145 lines
3.6 KiB
C#
Raw Normal View History

using Serein.Library.Api;
using Serein.Library.Enums;
using System;
using System.Linq;
namespace Serein.Library.Entity
{
2024-10-13 19:36:45 +08:00
/// <summary>
/// 方法描述信息
/// </summary>
public class MethodDetailsInfo
{
/// <summary>
/// 属于哪个DLL文件
/// </summary>
public string LibraryName { get; set; }
/// <summary>
/// 方法名称
/// </summary>
public string MethodName { get; set; }
/// <summary>
/// 节点类型
/// </summary>
public string NodeType { get; set; }
/// <summary>
/// 方法说明
/// </summary>
public string MethodTips { get; set; }
/// <summary>
/// 参数内容
/// </summary>
public ParameterDetailsInfo[] ParameterDetailsInfos { get; set; }
/// <summary>
/// 出参类型
/// </summary>
public string ReturnTypeFullName { get; set; }
}
2024-09-28 23:55:19 +08:00
/// <summary>
/// 每个节点有独自的MethodDetails实例
/// </summary>
public class MethodDetails
{
2024-10-13 19:36:45 +08:00
/// <summary>
/// 转为信息
/// </summary>
/// <returns></returns>
public MethodDetailsInfo ToInfo()
{
return new MethodDetailsInfo
{
MethodName = MethodName,
MethodTips = MethodTips,
NodeType = MethodDynamicType.ToString(),
ParameterDetailsInfos = this.ParameterDetailss.Select(p => p.ToInfo()).ToArray(),
ReturnTypeFullName = ReturnType.FullName,
};
}
/// <summary>
2024-09-28 23:55:19 +08:00
/// 从DLL拖动出来时拷贝新的实例
/// </summary>
/// <returns></returns>
public MethodDetails Clone()
{
return new MethodDetails
{
ActingInstance = ActingInstance,
ActingInstanceType = ActingInstanceType,
MethodDynamicType = MethodDynamicType,
MethodTips = MethodTips,
ReturnType = ReturnType,
MethodName = MethodName,
MethodLockName = MethodLockName,
IsProtectionParameter = IsProtectionParameter,
2024-10-13 19:36:45 +08:00
ParameterDetailss = ParameterDetailss?.Select(it => it.Clone()).ToArray(),
};
}
/// <summary>
2024-10-11 19:31:34 +08:00
/// 是否保护参数(仅视觉效果参数,不影响运行实现)
/// </summary>
2024-10-07 15:15:18 +08:00
public bool IsProtectionParameter { get; set; } = false;
/// <summary>
2024-10-11 19:31:34 +08:00
/// 作用实例的类型(多个相同的节点将拥有相同的类型)
/// </summary>
public Type ActingInstanceType { get; set; }
/// <summary>
2024-10-11 19:31:34 +08:00
/// 作用实例(多个相同的节点将会共享同一个实例)
/// </summary>
public object ActingInstance { get; set; }
/// <summary>
/// 方法名称
/// </summary>
public string MethodName { get; set; }
/// <summary>
/// 节点类型
/// </summary>
public NodeType MethodDynamicType { get; set; }
2024-10-11 19:31:34 +08:00
/// <summary>
2024-10-11 19:31:34 +08:00
/// 锁名称(暂未实现)
/// </summary>
public string MethodLockName { get; set; }
/// <summary>
/// 方法说明
/// </summary>
public string MethodTips { get; set; }
/// <summary>
2024-10-13 19:36:45 +08:00
/// 参数描述
/// </summary>
2024-10-13 19:36:45 +08:00
public ParameterDetails[] ParameterDetailss { get; set; }
/// <summary>
/// 出参类型
/// </summary>
public Type ReturnType { get; set; }
2024-10-11 19:31:34 +08:00
}
}