5
DIコンテナーを介して作成されたオブジェクトを初期化するためのパターンはありますか
Unityにオブジェクトの作成を管理させようとしているのですが、実行時までわからないいくつかの初期化パラメーターが必要です。 現時点で私がそれを行う方法を考えることができる唯一の方法は、インターフェイスにInitメソッドを持つことです。 interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } 次に、それを(Unityで)使用するには、次のようにします。 var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); このシナリオでは、runTimeParamparamはユーザー入力に基づいて実行時に決定されます。ここでの些細なケースは単にの値を返しますrunTimeParamが、実際にはパラメーターはファイル名のようなものであり、initializeメソッドはファイルに対して何かを行います。 これにより、多くの問題が発生します。つまり、このInitializeメソッドはインターフェースで使用でき、複数回呼び出すことができます。実装にフラグを設定し、を繰り返し呼び出したときに例外をスローするのInitializeは、かなり不格好です。 インターフェイスを解決する時点では、の実装について何も知りたくありませんIMyIntf。しかし、私が欲しいのは、このインターフェースが特定の1回の初期化パラメーターを必要とするという知識です。オブジェクトを作成するときに、何らかの方法でこの情報を使用してインターフェイスに注釈(属性)を付け、それらをフレームワークに渡す方法はありますか? 編集:インターフェースについてもう少し説明しました。