我正在使用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)从注册中排除特定类型/类/接口
这两种可能吗?我是否可能以某种方式不正确地使用了模块?任何帮助表示赞赏。