我有一个控制器,我想在两个不同的实体上用于实现相同接口的CRUD操作。我想要ninject基于URL中的查询字符串值(或可能是不同的URL,路由到同一控制器)的查询字符串值给它一个不同的存储库。这可能吗?我该怎么做?

有帮助吗?

解决方案

通常是设计气味,但您可以定义这样的绑定:

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

    return new RepoB();
}).InRequestScope();
.

其他提示

以下为我工作,从路由中获取特定值

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

    return new RepoB();
})
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top