代码拉取完成,页面将自动刷新
同步操作将从 magicodes/CodeSpirit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System.Reflection;
namespace CodeSpirit.Amis.Helpers
{
public class CrudHelper
{
/// <summary>
/// 判断指定控制器是否包含 CRUD 操作。
/// </summary>
/// <param name="controller">要检查的控制器类型。</param>
/// <returns>包含 CRUD 操作的对象。</returns>
public CrudActions HasCrudActions(Type controller)
{
// 初始化 CRUD 操作对象
CrudActions actions = new();
// 获取控制器的所有公共实例方法
IEnumerable<MethodInfo> methods = GetControllerMethods(controller);
// 查找符合创建操作前缀的方法
actions.Create = FindMethodByActionPrefix(methods, ["Create", "Add", "Post"]);
// 查找符合读取操作前缀的方法
actions.List = FindMethodByActionPrefix(methods, ["Get"]);
// 查找符合更新操作前缀的方法
actions.Update = FindMethodByActionPrefix(methods, ["Update", "Modify", "Put"]);
// 查找符合删除操作前缀的方法
actions.Delete = FindMethodByActionPrefix(methods, ["Delete", "Remove"]);
// 查找快速保存方法
actions.QuickSave = FindMethodByActionPrefix(methods, ["QuickSave"]);
// 查找导出方法
actions.Export = FindMethodByActionPrefix(methods, ["Export"]);
// 查账导入方法
actions.Import = FindMethodByActionPrefix(methods, ["Import", "BatchImport"]);
actions.Detail = FindMethodByActionPrefix(methods, ["Detail"]);
return actions;
}
/// <summary>
/// 获取指定控制器的所有公共实例方法(不包括基类的方法)。
/// </summary>
/// <param name="controller">要获取方法的控制器类型。</param>
/// <returns>控制器的所有公共实例方法。</returns>
private IEnumerable<MethodInfo> GetControllerMethods(Type controller)
{
return controller.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
}
/// <summary>
/// 根据方法名的前缀查找匹配的控制器方法。
/// </summary>
/// <param name="methods">控制器的所有方法集合。</param>
/// <param name="prefixes">方法名应匹配的前缀数组。</param>
/// <returns>匹配的第一个方法,如果没有找到则返回 null。</returns>
private MethodInfo FindMethodByActionPrefix(IEnumerable<MethodInfo> methods, string[] prefixes)
{
// 遍历所有方法,查找第一个方法名以给定前缀开头的方法
return methods.FirstOrDefault(m => prefixes.Any(prefix => m.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)));
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。