namespace WDBuyNET.DMSFrame.Utils
{
public static class TypeExtentions
{
public static bool IsPrimitive(this Type t)
{
bool result;
if (t.IsGenericType)
{
result = (TypeExtentions.IsNullableType(t) && TypeExtentions.IsPrimitive(Nullable.GetUnderlyingType(t)));
}
else
{
bool arg_14F_0;
if (!(t == typeof(string)) && !(t == typeof(short)) && !(t == typeof(ushort)) && !(t == typeof(int)) && !(t == typeof(uint)) && !(t == typeof(long)) && !(t == typeof(ulong)) && !(t == typeof(float)) && !(t == typeof(double)) && !(t == typeof(decimal)) && !(t == typeof(char)) && !(t == typeof(byte)) && !(t == typeof(bool)) && !(t == typeof(DateTime)))
{
arg_14F_0 = (t == typeof(Guid));
}
else
{
arg_14F_0 = true;
}
result = arg_14F_0;
}
return result;
}
public static bool IsStringType(this Type type)
{
bool arg_80_0;
if (!(type == typeof(string)) && !(type == typeof(bool)) && !(type == typeof(DateTime)) && !(type == typeof(Guid)) && !(type == typeof(bool?)) && !(type == typeof(DateTime?)))
{
arg_80_0 = (type == typeof(Guid?));
}
else
{
arg_80_0 = true;
}
return arg_80_0;
}
public static bool IsBooleanType(this Type type)
{
return TypeExtentions.GetUnderlyingType(type) == typeof(bool);
}
public static bool AllowsNullValue(this Type type)
{
return !type.IsValueType || TypeExtentions.IsNullableType(type);
}
public static bool IsNullableType(this Type type)
{
return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable);
}
public static Type GetUnderlyingType(this Type type)
{
return TypeExtentions.IsNullableType(type) ? Nullable.GetUnderlyingType(type) : type;
}
public static string Join(this string[] array, char splitChar)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < array.Length; i++)
{
stringBuilder.Append(array[i]);
stringBuilder.Append(splitChar);
}
return stringBuilder.ToString().TrimEnd(new char[]
{
splitChar
});
}
public static object DefaultValue(this Type type)
{
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
public static string MD5(this string text)
{
byte[] bytes = Encoding.Default.GetBytes(text);
MD5CryptoServiceProvider mD5CryptoServiceProvider = new MD5CryptoServiceProvider();
byte[] array = mD5CryptoServiceProvider.ComputeHash(bytes);
string text2 = "";
byte[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
byte b = array2[i];
text2 = ((b >= 16) ? (text2 + b.ToString("X")) : (text2 + "0" + b.ToString("X")));
}
return text2.ToLower();
}
}
}