オブジェクトの作成を 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 回限りの初期化パラメーターが必要であるという知識です。この情報を使用してインターフェイスに注釈を付け(属性?)、オブジェクトの作成時にそれらをフレームワークに渡す方法はありますか?
編集:インターフェイスについてもう少し説明しました。