Ninject绑定可以基于URL /路由值吗?

Jos*_*ltz 4 asp.net-mvc ninject ninject.web.mvc

我有一个控制器,我想在两个实现相同接口的不同实体上用于CRUD操作.我希望Ninject根据URL中的查询字符串值(或者可能是不同的URL,路由到同一个控制器)为其提供不同的存储库.这可能吗?我该怎么做?

Dar*_*rov 7

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

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

    return new RepoB();
}).InRequestScope();
Run Code Online (Sandbox Code Playgroud)

  • 你能详细说明为什么这是一种气味吗? (4认同)