依赖注入以解决与运行时数据的依赖关系

时间:2017-08-23 22:30:49

标签: c# asp.net-web-api dependency-injection simple-injector

我正在为我的web api项目使用简单的注入器。我有一个需要会话令牌的服务才能实例化。

public class CustomerService
{
   public CustomerService(Auth auth, IRepositoryFactory repositoryFactory)
   {
        // make post call to another web api for validation
        SomeWebApiCallToValidateAuth.vaildate(auth);
   }
}

因此,对于此服务,它需要auth令牌和repositoryFactory。我希望它能够注入auth参数(来自http Web请求),同时使用已注册到容器的指定实现的内容来解析存储库工厂。

但我不知道如何用简单的注射器注册它,或者如果有办法解决它。任何帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:5)

您当前的方法有几个缺点:

关于工厂:注入IRepository而不是IRepositoryFactory。这可能需要您隐藏代理背后的真实存储库,如here所述。

关于Auth值,它取决于需要,但如果Auth值是API CustomerService的重要部分,则可以添加{Auth 1}}作为CustomerService方法的论据。如果它是一个实现细节,请注入某种IAuthProvider抽象,允许您在运行时检索该值(在构建对象图之后)。同样,这一切都在this article中描述。