我正在为我的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请求),同时使用已注册到容器的指定实现的内容来解析存储库工厂。
但我不知道如何用简单的注射器注册它,或者如果有办法解决它。任何帮助都会很棒。感谢。
答案 0 :(得分:5)
您当前的方法有几个缺点:
关于工厂:注入IRepository
而不是IRepositoryFactory
。这可能需要您隐藏代理背后的真实存储库,如here所述。
关于Auth
值,它取决于需要,但如果Auth
值是API
CustomerService
的重要部分,则可以添加{Auth
1}}作为CustomerService
方法的论据。如果它是一个实现细节,请注入某种IAuthProvider
抽象,允许您在运行时检索该值(在构建对象图之后)。同样,这一切都在this article中描述。