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