阻止Autofac在引用的程序集中注册所有类型

时间:2019-01-02 12:32:05

标签: c# asp.net dependency-injection 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)从注册中排除特定类型/类/接口

这两种可能吗?我是否可能以某种方式不正确地使用了模块?任何帮助表示赞赏。

0 个答案:

没有答案
相关问题