c# - 防止 Autofac 在引用的程序集中注册所有类型
问题描述
我正在使用 autofac 模块来注册我的应用程序服务/类型等......就像这样:
var builder = new ContainerBuilder();
builder.RegisterModule(new ConduitRegistryModule());
// etc...
示例模块类/代码:
/// <summary>
/// Handle the container builder load event.
/// </summary>
/// <param name="builder">The builder through which components can be registered.</param>
protected override void Load(ContainerBuilder builder)
{
RegisterServices(builder);
}
/// <summary>
/// Register conduit services.
/// </summary>
/// <param name="builder">The builder through which components can be registered.</param>
private void RegisterServices(ContainerBuilder builder)
{
builder.RegisterType<Conduit>().As<IConduit>().SingleInstance();
builder.RegisterType<PhonelistService>().As<IPhonelistService>().InstancePerLifetimeScope();
builder.RegisterType<UtilityService>().As<IUtilityService>().InstancePerLifetimeScope();
builder.RegisterType<VacancyService>().As<IVacancyService>().InstancePerLifetimeScope();
builder.RegisterType<InteractionService>().As<IInteractionService>().InstancePerLifetimeScope();
}
然后Global.asax.cs
在应用程序启动时在文件中构建它,Get()
返回带有注册模块的构建器:
var builder = new ContainerBuilderFactory().Get();
_containerProvider = new ContainerProvider(builder.Build());
这一切都很好,但是当我查看容器组件注册属性时,我发现 autofac 正在注册许多不相关的类型。这会导致我们使用的框架中的某些类型出现一些问题(不幸的是无法控制这些类型),因此希望将 Autofac 配置为:
a) 不要在应用程序中注册所有类型/类(我认为使用 autofac 模块可以实现这一点?)
b) 从注册中排除特定类型/类/接口
这些都可能吗?我是否可能以某种方式错误地使用了模块?任何帮助表示赞赏。
解决方案
推荐阅读
- javascript - 如何在脚本计数后立即使用 AJAX 查看数据库中的数据?
- java - 对数据库的调用是否会在方法中产生新线程
- php - 根据共享列值对关联行数据进行分组
- csv - 使用 awk 在多个 csv 文件中添加列
- angular - Karma & Angular 5 - 组件继承 - 单元测试失败
- ios - Iphone SE 中未检测到水平面
- json - 如何使用 Jmeter 存储整个响应并为下一次休息调用更新它
- c# - 在我的代码隐藏中看不到 Telerik RadTextBox
- swift - Swizzle `init` 并调用内部的实际实现,Swift 4
- jquery - TextBox 中总是有 5 位数字