【发布时间】:2017-08-23 22:30:49
【问题描述】:
我正在为我的 web api 项目使用简单的注入器。我有一个需要会话令牌才能实例化的服务。
public class CustomerService
{
public CustomerService(Auth auth, IRepositoryFactory repositoryFactory)
{
// make post call to another web api for validation
SomeWebApiCallToValidateAuth.vaildate(auth);
}
}
因此,对于此服务,它需要一个身份验证令牌和一个 repositoryFactory。我希望它能够注入 auth 参数(来自 http Web 请求),同时使用已注册到容器的指定实现来解析存储库工厂。
但我不确定如何使用简单的注入器注册它,或者是否有解决方法。任何帮助都会很棒。谢谢。
【问题讨论】:
-
为什么不为这项服务也设立一个工厂呢?在其中注入存储库工厂,并使用运行时数据调用方法。另一种选择是检查您的关注点分离。问题中没有足够的信息,所以我无法为您指出那个方向。
-
您应该在服务中有一个方法,该方法将令牌作为参数进行验证。使用当前方法,如果验证失败,对象初始化将失败,这将破坏整个控制流。如果您仍想继续使用这种方法,那将非常棘手,因为您需要将令牌放在某个地方,以便 DI 容器读取该令牌以初始化服务。不确定哪个 DI 容器有这种支持
标签: c# asp.net-web-api dependency-injection simple-injector