using System; using System.Collections.Generic; using System.Reflection; using System.Text; namespace JiShe.CollectBus.Common.Helpers { public static class TypeHelper { public static bool IsFunc(object obj) { if (obj == null) { return false; } var type = obj.GetType(); if (!type.GetTypeInfo().IsGenericType) { return false; } return type.GetGenericTypeDefinition() == typeof(Func<>); } public static bool IsFunc(object obj) { return obj != null && obj.GetType() == typeof(Func); } public static bool IsPrimitiveExtendedIncludingNullable(Type type, bool includeEnums = false) { if (IsPrimitiveExtended(type, includeEnums)) { return true; } if (type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) { return IsPrimitiveExtended(type.GenericTypeArguments[0], includeEnums); } return false; } private static bool IsPrimitiveExtended(Type type, bool includeEnums) { if (type.GetTypeInfo().IsPrimitive) { return true; } if (includeEnums && type.GetTypeInfo().IsEnum) { return true; } return type == typeof(string) || type == typeof(decimal) || type == typeof(DateTime) || type == typeof(DateTimeOffset) || type == typeof(TimeSpan) || type == typeof(Guid); } } }