zoukankan      html  css  js  c++  java
  • Extend

        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;
                }
            }
    
        }
  • 相关阅读:
    vika维格表的新 CP ,飞书集成入口上线
    OKR落地四部曲:vika维格表帮你快速养成OKR思维
    ASP.NET, IIS, and Visual Web Developer 技巧与窍门
    VS2008 Tips #008 如何创建ASP.NET Web 用户控件并包含在Web 页面中
    VS2008 Tips #007 如何用 ListView 控件将数据排序
    VS2008 Tips #005 – 如何绑定 ListView 控件
    VS2008 Tip #001 创建、管理和运用样式的强大 CSS 工具
    VS2008 Tips #006 关于“标记导航”的特性
    VS2008 Tips #003 – VS 2008 的拆分视图可以设置为垂直分割
    VS2008 Tips #004 – 您可以通过“浏览方式…”添加浏览器到 Visual Web Developer
  • 原文地址:https://www.cnblogs.com/jonney-wang/p/13654739.html
Copyright © 2011-2022 走看看