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