人们倾向于建议缓存 XmlSerializer 实例。这仍然是实际的吗? (如果没有,它何时成为?)。
此外,我想出了以下代码,并要求对其进行审核。
代码:
public static class SerializerFactory<T>
{
public static readonly XmlSerializer Serializer = new XmlSerializer(typeof(T));
}
和用法:
var obj = (T)XmlSerializerFactory<T>.Serializer.Deserialize(input);
答案 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
字段,也最好使用属性来访问它们。