• c# 开发可替换的通用序列化库


    开篇继续吹牛。。。。

    其实没有什么可吹的了,哈哈哈哈哈

    主要是写一个通用库,既可以直接用,又方便替换,我的序列化都是采用第三方的哈。

    我不上完整代码了,只是给大家讲讲过程。

    1.写一个序列化的类,我是使用前面给大家介绍的messagepack哈。一个静态类,这个随自己需要。

    2.写另一个封装类CommonSerializer,相当于一个模板,里面所有序列化,反序列化方法都是虚方法,调用前面的messagepack方法,最后方法名称都一样。

    3.再写一个对外的序列化泛型类SerializerFactory。里面的方法和上面的CommonSerializer一样,最好名称也一致。

    这里: SerializerFactory<TSerializer> where TSerializer: CommonSerializer

    这样的定义大家是不是明白了呢,

    在你自己的项目中,

     SerializerFactory<CommonSerializer>.方法:使用默认的序列化

    当你要替换其中的方法或者组件时。

    写一个myclass类继承CommonSerializer,覆盖方法即可。

    SerializerFactory<myclass>.方法

    SerializerFactory类里面部分代码需要

     private static Dictionary<string, CommonSerializer> dic_Serializer = new Dictionary<string, CommonSerializer>();
            
            //采用属性方式,不使用方法,更加舒服
            private static CommonSerializer SerializerCls
            {
                get
                {
                    //不考虑锁,替换对象而已,也没有遍历
                    Type serializerType = typeof(TSerializer);
                    CommonSerializer serializer = null;
                    if (dic_Serializer.TryGetValue(serializerType.FullName, out serializer))
                    {
                        return serializer;
                    }
                    else
                    {
                        serializer = Activator.CreateInstance<TSerializer>();
                        dic_Serializer[serializerType.FullName] = serializer;
                        return serializer;
                    }
                }
            }

    这样你可以使用不同的序列化组件在同一个库中。

    比如一个序列化方法中

     /// <summary>
            /// 序列化二进制
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static byte[] Serializer<T>(T obj)
            {
                return SerializerCls.Serializer<T>(obj);
            }

  • 相关阅读:
    腾讯收购的《部落冲突》开发商有多牛?(这几个哥们真牛,什么技术都会,还能做出工业级的产品)
    人类最强大的一句话,可能就是三个字:我不要!
    Qt发展历史及其特点简介(没有哪一种方案能够独霸Windows)
    SpringMVC入门
    23种设计模式
    .NET序列化的一点技巧(附Demo)
    系统分层演变
    MVC程序中实体框架的连接恢复和命令拦截
    Mocha JavaScript TDD
    小型网站快速建设
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10312365.html
Copyright © 2020-2023  润新知