public static class Extend { public static DateTime Local(this DateTime now) { return DateTime.Parse(now.ToString("yyyy-MM-dd HH:mm:ss")); } public static byte[] ToBin(this object obj) { return MessagePack.MessagePackSerializer.Serialize(obj.GetType(), obj , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); } public static T FromBin<T>(this byte[] bytes) { ReadOnlyMemory<byte> temp = new ReadOnlyMemory<byte>(bytes); return (T)MessagePack.MessagePackSerializer.Deserialize(typeof(T), temp , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); } public static T ToObj<T>(this object obj) { var bytes = MessagePack.MessagePackSerializer.Serialize(obj.GetType(), obj , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); ReadOnlyMemory<byte> temp = new ReadOnlyMemory<byte>(bytes); return (T)MessagePack.MessagePackSerializer.Deserialize(typeof(T), temp , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); } /// <summary> /// 比较两个对象各属性值是否一样,非对象的Hashcode是否一样 /// </summary> /// <param name="source"></param> /// <param name="dest"></param> /// <returns></returns> public static bool Diff(this object source, object dest) { var binSource= MessagePack.MessagePackSerializer.Serialize(source.GetType(), source , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); var binDest = MessagePack.MessagePackSerializer.Serialize(dest.GetType(), dest , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider()) { byte[] sourceEncryptdata = md5.ComputeHash(binSource); var sourceStr = System.BitConverter.ToString(sourceEncryptdata); sourceStr = sourceStr.Replace("-", "").ToUpper(); byte[] destEncryptdata = md5.ComputeHash(binDest); var destStr = System.BitConverter.ToString(destEncryptdata); destStr = destStr.Replace("-", "").ToUpper(); return sourceStr == destStr; } } /// <summary> /// 综合对象各属性值,计算其MD5 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string Md5(this object obj) { var bin = MessagePack.MessagePackSerializer.Serialize(obj.GetType(), obj , MessagePack.MessagePackSerializerOptions.Standard .WithResolver(MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance)); using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider()) { byte[] encryptdata = md5.ComputeHash(bin); var str = System.BitConverter.ToString(encryptdata); str = str.Replace("-", "").ToUpper(); return str; } } }