Запретить Autofac регистрировать все типы в сборках, на которые есть ссылки - PullRequest
0 голосов
/ 02 января 2019

Я использую модули автозапуска для регистрации служб / типов приложений и т. Д., Например:

 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, когда я проверяю свойство registery компонента контейнера. Это вызывает некоторые проблемы с некоторыми типами, которые являются частью используемой нами структуры (к сожалению, не имеем никакого контроля над ними), поэтому мы хотели бы настроить Autofac на:

a) НЕ регистрировать все типы / классы в приложении (я думал, что с помощью модулей автозапуска это удастся?)

b) Исключить определенный тип / класс / интерфейс из регистрации

Возможно ли это? Возможно, я как-то неправильно использовал модули? Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...