dependency-injection - 我可以传递一个组件来注册到 Autofac 模块吗?
问题描述
我有一个模块,这个模块有一个接口,消费应用程序需要实现。
我想将该实现传递回我的模块,以便在 Module.load() 方法中进行注册。
我希望传入具有特定基本类型的类型。(我也不确定这是否可能)
如果模块用户忘记注册接口组件,我希望这会给我一个编译时错误。
解决方案
我一直在寻找的答案最终使用了泛型,我不熟悉的 C# 部分是 Where 子句,它允许您指定父级。TAppUSerQuery 是我可以在我的 Autofac 配置中使用的变量。
我的班级标题看起来像这样
public class AuthConfigurationModule<TAppUserQuery> :Module
where TAppUserQuery : IAppUserQuery
我的 Autofac 加载函数看起来像这样。
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<TAppUserQuery>().As<IAppUserQuery>();
builder.RegisterType<ResolveApplicationUser>().As<IResolveApplicationUser>();
builder.RegisterType<AuthUserRepository>()
.As<IAuthUserRepository>()
.WithParameter(new TypedParameter(typeof(string), _connection));
}
推荐阅读
- python-3.x - Python 的 request.get 变得极其缓慢
- python - 为什么我不能使用从另一个 py 文件导入的属性?
- c# - 为什么在 C# 中读取 excel 的相同代码不再读取 excel?
- mongodb - mongodb查找文档具有ID以外的文档
- windows - Windows CMD 批处理“if”语句字符串检查有时会区分大小写
- salesforce - SFCC/Demandware 对 OCAPI 的速率限制是多少?
- here-api - HERE.com:为 Javascript 和 REST 生成应用程序代码
- java - 使用 IntelliJ 在 Spring Boot 中自定义应用程序属性
- python - 如何将已注册的过滤器从一个 Django 视图导入到另一个视图?
- scala - 使用 if 语句进行理解的 scala 导致无法理解的编译错误