Ninject 动态绑定

Ninject dynamic binding

我有一个 UserController,它引用了实现业务逻辑的 UserService,我有几个用户角色,我在业务逻辑中有不同的行为,所以我的服务中有很多 'if statements'。

然后我决定创建一个 BaseUserService,其中我对所有用户都有共同的行为,并且我为每个角色创建了一个单独的服务,其中为每个角色定义了特定的行为。

在控制器构造函数中,我检查哪个是用户角色并创建适当的服务类型。但是我想知道如果我可以使用这种使用 Ninject 依赖注入的方法,我可以在 运行 时间将用户界面绑定到控制器构造函数中的适当实现吗?例如,如果用户的角色是管理员,则将用户界面绑定到 AdminService...这可以在 Ninject 中完成吗?

您想要做的是传入一个 IUserServiceFactory 而不是 UserServce 注入到 Controller Constructor 中。然后可以从 Contoller 调用工厂,并根据用户角色,工厂将 return 适当的实现。有关工厂模式的更多信息,请参阅 here