名前付きインスタンスを使用して同じインターフェースの実装に登録しようとしています
kernel.Bind<IRepository>().To<CachedRepository>().InSingletonScope();
kernel.Bind<IRepository>().To<DbRepository>().InSingletonScope().Named("db");
アイデアは、名前を指定しないと CachedRepository が作成され、DB指向のものが必要な場合は Named 属性を使用するということですが、単純なオブジェクトが作成されると、この惨めなことが失敗します
public class TripManagerController : Controller
{
[Inject]
public IRepository Repository { get; set; } // default Cached repo must be created
public TripManagerController()
{
ViewBag.LogedEmail = "test@test.com";
}
}
エラーは
IRepository のアクティブ化でエラーが発生しました 一致するバインディングが複数あります。アクティベーション パス: 2) 依存関係 IRepository を TripManagerController 型のコンストラクターのパラメーター リポジトリに挿入する 1) TripManagerController の要求
提案: 1) IRepository のバインディングを 1 回だけ定義したことを確認します。
BD 指向のリポジトリ用の新しいインターフェイスを作成せずに、私が望むものを達成する方法はありますか? どうも