/// summary /// 从ISugarQueryableT对象中获取泛型参数的类名称 /// /summary /// param namequeryISugarQueryableT查询对象/param /// returns泛型类名称字符串如User如果不是ISugarQueryable类型则返回null/returns public string GetSugarQueryGenericTypeNameTEntity(ISugarQueryableTEntity query) { if (query null) { throw new ArgumentNullException(nameof(query), 查询对象不能为空); } // 1. 获取query对象的实际类型 Type queryType query.GetType(); // 2. 查找实现的ISugarQueryableT接口可能是泛型接口 Type genericInterface queryType.GetInterface(typeof(ISugarQueryable).FullName); if (genericInterface null) { // 如果不是泛型版本尝试获取非泛型ISugarQueryable的EntityType // 兼容SqlSugar的不同版本 PropertyInfo entityTypeProp queryType.GetProperty(EntityType); if (entityTypeProp ! null) { Type entityType (Type)entityTypeProp.GetValue(query); return entityType?.Name; } return null; } // 3. 获取泛型接口的类型参数即T Type[] genericArguments genericInterface.GetGenericArguments(); if (genericArguments.Length 0) { // 获取类名称不含命名空间 string className genericArguments[0].Name; // 可选如果需要带命名空间的完整名称使用 FullName // string fullClassName genericArguments[0].FullName; return className; } return null; }