代码优化

master
xiaochanghai 1 year ago
parent 8b79ed7a09
commit 1529356162
  1. 32
      Tiobon.Core.Common/Extensions/GenericTypeExtensions.cs
  2. 6
      Tiobon.Core.Common/Helper/DynamicLinqFactory.cs
  3. 56
      Tiobon.Core.Common/Helper/GenericTypeExtensions.cs
  4. 30
      Tiobon.Core.Extensions/ServiceExtensions/GenericTypeExtensions.cs

@ -34,25 +34,25 @@ namespace Tiobon.Core.Common.Extensions
/// <param name="type">类型</param>
/// <param name="generic">泛型类型</param>
/// <returns>bool</returns>
// public static bool HasImplementedRawGeneric(this Type type, Type generic)
// {
// // 检查接口类型
// var isTheRawGenericType = type.GetInterfaces().Any(IsTheRawGenericType);
// if (isTheRawGenericType) return true;
public static bool HasImplementedRawGeneric(this Type type, Type generic)
{
// 检查接口类型
var isTheRawGenericType = type.GetInterfaces().Any(IsTheRawGenericType);
if (isTheRawGenericType) return true;
// // 检查类型
// while (type != null && type != typeof(object))
// {
// isTheRawGenericType = IsTheRawGenericType(type);
// if (isTheRawGenericType) return true;
// type = type.BaseType;
// }
// 检查类型
while (type != null && type != typeof(object))
{
isTheRawGenericType = IsTheRawGenericType(type);
if (isTheRawGenericType) return true;
type = type.BaseType;
}
// return false;
return false;
// // 判断逻辑
// bool IsTheRawGenericType(Type type) => generic == (type.IsGenericType ? type.GetGenericTypeDefinition() : type);
// }
// 判断逻辑
bool IsTheRawGenericType(Type t) => generic == (t.IsGenericType ? t.GetGenericTypeDefinition() : t);
}
/// <summary>
/// 复制 <paramref name="source"/> 的副本

@ -1,12 +1,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using Mapster;
using Tiobon.Core.Common.Extensions;
namespace Tiobon.Core.Common.Helper
{

@ -1,56 +0,0 @@
using System;
using System.Linq;
namespace Tiobon.Core.Common.Helper
{
public static class GenericTypeExtensions
{
/// <summary>
/// 判断类型是否实现某个泛型
/// </summary>
/// <param name="type">类型</param>
/// <param name="generic">泛型类型</param>
/// <returns>bool</returns>
public static bool HasImplementedRawGeneric(this Type type, Type generic)
{
// 检查接口类型
var isTheRawGenericType = type.GetInterfaces().Any(IsTheRawGenericType);
if (isTheRawGenericType) return true;
// 检查类型
while (type != null && type != typeof(object))
{
isTheRawGenericType = IsTheRawGenericType(type);
if (isTheRawGenericType) return true;
type = type.BaseType;
}
return false;
// 判断逻辑
bool IsTheRawGenericType(Type t) => generic == (t.IsGenericType ? t.GetGenericTypeDefinition() : t);
}
public static string GetGenericTypeName(this Type type)
{
var typeName = string.Empty;
if (type.IsGenericType)
{
var genericTypes = string.Join(",", type.GetGenericArguments().Select(t => t.Name).ToArray());
typeName = $"{type.Name.Remove(type.Name.IndexOf('`'))}<{genericTypes}>";
}
else
{
typeName = type.Name;
}
return typeName;
}
public static string GetGenericTypeName(this object @object)
{
return @object.GetType().GetGenericTypeName();
}
}
}

@ -1,30 +0,0 @@
using System;
using System.Linq;
namespace Tiobon.Core.Extensions
{
public static class GenericTypeExtensions
{
public static string GetGenericTypeName(this Type type)
{
var typeName = string.Empty;
if (type.IsGenericType)
{
var genericTypes = string.Join(",", type.GetGenericArguments().Select(t => t.Name).ToArray());
typeName = $"{type.Name.Remove(type.Name.IndexOf('`'))}<{genericTypes}>";
}
else
{
typeName = type.Name;
}
return typeName;
}
public static string GetGenericTypeName(this object @object)
{
return @object.GetType().GetGenericTypeName();
}
}
}
Loading…
Cancel
Save