4

同じインターフェイスを実装する2つの異なるエンティティでのCRUD操作に使用する単一のコントローラーがあります。Ninjectに、URLのクエリ文字列値(または同じコントローラーにルーティングされた別のURL)に基づいて別のリポジトリを提供したいと思います。これは可能ですか?どうすればいいですか?

4

2 に答える 2

7

これは通常、デザインの匂いですが、バインディングを次のように定義できます。

kernel.Bind<IRepo>().ToMethod(ctx => 
{
    var a = HttpContext.Current.Request["a"];
    if (a == "b")
    {
        return new RepoA();
    }

    return new RepoB();
}).InRequestScope();
于 2012-10-01T15:15:25.367 に答える
0

以下は私のために働いた、ルートから特定の値を取得する

kernel.Bind<IRepo>().ToMethod(ctx => 
{
    var a = HttpContext.Current.Request.RequestContext.RouteData.Values["RouteDateValue"]
    if (a != null)
    {
        return new RepoA(a);
    }

    return new RepoB();
})
于 2018-01-16T13:32:51.830 に答える