型指定された xmlserialize オブジェクトがたくさんあります:
class Serializer{
static XmlSerializer serializerRequest_EnterVehicle = new XmlSerializer(typeof(Request_EnterVehicle));
static XmlSerializer serializerRequest_Cancel = new XmlSerializer(typeof(Request_Cancel));
static XmlSerializer serializerRequest_PrintInfo = new XmlSerializer(typeof(Request_PrintInfo));
public string ObjToXML(object toSerialize)...
}
これらを実行時に作成する代わりに、アプリケーションの開始時に初期化したいと思います。これらはシリアライザ クラスの一部ですが、これが良い方法かどうかはわかりません。この種の初期化を行うためのより良い方法はありますか?これに関連する他のコストはありますか?
この初期化コストは static キーワードを使用して 1 回だけ実行されるという前提で正しいでしょうか?
編集: プロジェクトは、Windows モバイル 6.1 Pro デバイス用の .NET 3.5 Compact Framework プロジェクトです。
更新しました:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
namespace SmartDevice_Proxy
{
public sealed class TypedXMLSerializers
{
private static volatile TypedXMLSerializers instance;
private static object syncRoot = new Object();
//Implementation as Singleton
static XmlSerializer serializerRequest_EnterVehicle = new XmlSerializer(typeof(Request_EnterVehicle));
static XmlSerializer serializerRequest_Cancel = new XmlSerializer(typeof(Request_Cancel));
static XmlSerializer serializerRequest_PrintInfo = new XmlSerializer(typeof(Request_PrintInfo));
private TypedXMLSerializers() { }
public static TypedXMLSerializers Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new TypedXMLSerializers();
}
}
return instance;
}
}
}
}
スレッドセーフのためにこれをテストする必要があります。