代码之家  ›  专栏  ›  技术社区  ›  Konstantin Spirin

代码审查请求:这样的XmlSerializer工厂有什么缺点吗?

  •  1
  • Konstantin Spirin  · 技术社区  · 16 年前

    XmlSerializer 实例。这仍然是真的吗(如果

    • 它有什么缺点吗?
    • 对于不同的类型,它会使用许多线程\内核吗?
    • 我怎样才能改进它?

    守则:

    public static class SerializerFactory<T>
    {
        public static readonly XmlSerializer Serializer = new XmlSerializer(typeof(T));
    }
    

    var obj = (T)XmlSerializerFactory<T>.Serializer.Deserialize(input);
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Greg Beech    16 年前

    当你使用 XmlSerializer(Type) XmlSerializer(Type,String) 构造函数,则序列化程序集将被缓存,因此创建新序列化程序实例的开销非常小( source ).

    因此,由于您的工厂将使用此构造函数,因此它没有实际意义。您也可以直接使用构造函数。

        2
  •  1
  •   Andrew Hare    16 年前

    我建议改为:

    public static class SerializerFactory<T>
    {
        static readonly XmlSerializer serializer = new XmlSerializer(typeof(T));
    
        public static XmlSerializer 
        { 
            get { return serializer; }
        }
    }
    

    static readonly 字段最好使用属性来访问它们。

    推荐文章