asp.net-mvc - Ninject 绑定(bind)可以基于 URL/路由值吗?

标签 asp.net-mvc ninject ninject.web.mvc

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

最佳答案

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

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

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

关于asp.net-mvc - Ninject 绑定(bind)可以基于 URL/路由值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675977/

相关文章:

asp.net - 如果我使用 InRequestScope(),在哪里执行 DBContext.SaveChanges()

c# - 如何使用 Ninject Conventions Extension 进行绑定(bind)?

html - 在 Razor 中的 "a href"标记内嵌入 if 语句

asp.net - 大文件上传到asp.net MVC

asp.net-mvc - 具有多个项目的 MVC Ninject

c# - 如何跨程序集使用 Ninject

asp.net-mvc - 如何指定 DataAnnotation ValidationAttribute 的顺序?

c# - 使用 SQL 数据库在 Azure 门户上部署 ASP.NET MVC 应用程序

asp.net-web-api - 使用 Web API 和 Ninject 注入(inject) IOwinContext

c# - 将依赖项注入(inject) DelegatingHandler