MySettings
私は 2 つのコントローラーを持っていますが、どちらも一連の設定を表すタイプのオブジェクトを必要とします。各コントローラには、独自の設定セットが必要です。これを行うには、モジュールの登録時に 2 つの設定オブジェクトを手動で作成し、両方をコンテナーに配置します。質問は、各コントローラーに MySettings 型の独自の事前定義されたカスタム初期化インスタンスを挿入するように指定するにはどうすればよいですか?
アップデート:
現在、すべての解決が手動で行われるため、基本的にAutofacを役に立たなくする醜い回避策があります。
public class MyModule : Module {
protected override void Load(ContainerBuilder builder) {
builder.Register(context => {
var productControllerSettings = new MyListSettings(
pageSize: 20,
orderBy: "Name",
orderDirection: OrderDirection.Ascending
);
// and hell of other parameters that I need to resove
// by hands by doing context.Resolve<...> for each of them
var productController = new ProductController(
productControllerSettings
/*, the reset of parameters */
);
return productController;
});
builder.Register(context => {
var userControllerSettings = new MyListSettings {
pageSize: 20,
orderBy: "LastName",
orderDirection: OrderDirection.Ascending
};
var userController = new UserController(
userControllerSettings
/*, the rest of parameters resolved by calling context.Resolve<> by hands */
);
return userController;
});
}
}
もっと良い方法があるはずです。
更新 2:
この不足を回避する別の方法は、MySettings クラスに基づいて 2 つの新しい設定クラスを作成することです。このようにして、各インスタンスはクラスに一意に対応し、Autofac はそれを簡単に解決できます。Autofac を機能させるためだけにやりたいわけではありません。