Ninject动态绑定

时间:2015-10-29 22:25:38

标签: c# asp.net .net dependency-injection ninject

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

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

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

1 个答案:

答案 0 :(得分:1)

您要做的是传入IUserServiceFactory而不是UserServce注入Controller Constructor。然后可以从Contoller调用工厂,并根据用户角色,工厂将返回相应的实现。有关工厂模式的更多信息,请参阅here