コンストラクターの実行後に一度初期化する必要がある 5 ~ 6 個のフィールドを持つクラスがあります。
public OriginalFileProcessor(IConfigManager configManager)
{
this._configManager = configManager;
this._field1 = this._configManager.GetAppSetting<int>ConfigKeys.Key1);
this._field2 = this._configManager.GetAppSetting<int>ConfigKeys.Key2);
this._field3 = this._configManager.GetAppSetting<int>ConfigKeys.Key3);
this._field4 = this._configManager.GetAppSetting<int>ConfigKeys.Key4);
this._field5 = this._configManager.GetAppSetting<int>ConfigKeys.Key5);
}
しかし、コンストラクターでの単純な代入以外のロジックを書くのは好きではありません。
たとえば、field1 のインライン初期化を使用することはできません。それ以降、そこで _configManager インスタンスを使用することはできません。
private int readonly _field1 = this._configManager.GetAppSetting<int>ConfigKeys.Key1);
読み取り専用プロパティを使用する場合は、次のようなコードを追加する必要があります。
private int? _field1;
public int Property1
{
get
{
if (!this._field1.HasValue)
{
this.__field1 = this._configManager.GetAppSetting<int>(Key1);
}
return this._field1.Value;
}
}
インスタンスフィールドの初期化を遅らせるためのより簡単な方法はありますか?