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

时间:2009-09-29 20:03:55

标签: .net multithreading xml-serialization

人们倾向于建议缓存 XmlSerializer 实例。这仍然是实际的吗? (如果没有,它何时成为?)。

此外,我想出了以下代码,并要求对其进行审核。

  • 有任何缺点吗?
  • 它会为不同类型使用多个线程\核心吗?
  • 我该如何改进?

代码:

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

和用法:

var obj = (T)XmlSerializerFactory<T>.Serializer.Deserialize(input);

2 个答案:

答案 0 :(得分:2)

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

因为你的工厂会使用这个构造函数,所以没有真正的意义。您也可以直接使用构造函数。

答案 1 :(得分:1)

我建议改为:

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

    public static XmlSerializer 
    { 
        get { return serializer; }
    }
}

即使您拥有static readonly字段,也最好使用属性来访问它们。