【发布时间】:2015-01-09 18:34:34
【问题描述】:
对于不同的模块,我们有两种身份验证方法——UserAuthModule 和 ServiceAuthModule。我们创建了 2 个模块派生自的基类。我们已将 AuthProviders 连接到 IAuthProvider。然后我们在构造函数中有一个依赖项,应该注入正确的 AuthProvider。然而,我们无法找到告诉 Nancy/TinyIoC 使用哪个具体类的方法。伪代码如下:
abstract class UserAuthModule : NancyModule
{
public UserAuthModule(IAuthProvider authProvider) // should get the UserAuthProvider concrete class
}
abstract class ServiceAuthModule : NancyModule
{
public ServiceAuthModule(IAuthProvider authProvider) // should get the ServiceAuthProvider concrete class
}
这是一个具体模块的类声明示例:
public class AccountModule : UserAuthModule
然后我们陷入困境:我们如何为 IAuthProvider 接口注册 2 个具体类?我们可以命名它们,但不知道 Nancy 在进行构造函数注入时如何知道要注入哪个类。
在我们的引导程序中,我们有:
Container.Register<IAuthProvider, UserAuthProvider>(“UserAuth”);
Container.Register<IAuthProvider, ServiceAuthProvider>(“ServiceAuth”);
我们可以从容器中解析类型,但在 Nancy 模块中没有容器访问权限。
【问题讨论】:
标签: nancy