カスタムメッセージ形式を処理するファクトリがあります。この形式に基づいて、いくつかの異なるメッセージセットがシステムで定義されます。メッセージがファクトリに「自動登録」されるように、メッセージ処理コードを再構築しようとしています。これにより、システムのさまざまな部分に必要なメッセージセットのみを含めることができ、既存のコードに影響を与えることなくメッセージセットを追加することもできます。
登録されている主なファクトリクラスは次のとおりです。
public class MessageFactory
{
internal static List<FactoryListEntry> _seriesFactories = new List<FactoryListEntry>();
public static void RegisterSeriesFactory( long seriesId, ushort seriesVersion,
ISeriesFactory factory )
{
MessageFactory._seriesFactories.Add(
new FactoryListEntry( seriesId, seriesVersion, factory ));
}
}
ユニークシリーズの自動登録クラスは次のようになります。
public class Series1AutoRegistration
{
private static Series1AutoRegistration register = new Series1AutoRegistration();
private Series1AutoRegistration()
{
MessageFactory.RegisterSeriesFactory( SERIES_ID,
SERIES_VERSION,
new Series1Factory() );
}
}
C ++では、グローバルな静的Series1AutoRegistration変数を作成しました。ただし、c#は、静的メンバーが使用される直前まで静的メンバーの初期化を保証しないため、自動登録は行われません。誰かが私がこれを達成する方法についてアイデアを持っていますか?