Регистрация наборов в Autofac 2.1.10 RC

Я обновляю код от Autofac 1.4 до 2.1.10 Предвыпускных версий.

Мой модуль ранее выполнил регистрацию как это:

builder.RegisterCollection<IExceptionHandler>()
                .As<IEnumerable<IExceptionHandler>>()
                .FactoryScoped();
builder.Register<AspNetExceptionHandler>()
                .As<IExceptionHandler>()
                .MemberOf<IEnumerable<IExceptionHandler>>()
                .FactoryScoped();

Теперь, RegisterCollection не имеет никакой перегрузки без параметров. Я не забочусь о присвоении его об имени. Принятие нормально просто передавать в null, мой код похож на это в 2,1:

builder.RegisterCollection<IExceptionHandler>(null)
                .As<IEnumerable<IExceptionHandler>>()
                .InstancePerDependency();
builder.RegisterType<AspNetExceptionHandler>()
                .As<IExceptionHandler>()
                .MemberOf<IEnumerable<IExceptionHandler>>(null)
                .InstancePerDependency();

Однако, когда я компилирую, я получаю следующую ошибку относительно .MemberOf:

Используя общий метод 'Autofac. RegistrationExtensions. MemberOf (Autofac. Разработчик. RegistrationBuilder, строка)', требует '3' аргументы типа

Я пытался включить имя набора вместо пустого указателя, на всякий случай, и это не имело никакого эффекта.

Что надлежащий путь состоит в том, чтобы зарегистрировать наборы в 2,1?

7
задан mgrbsk 24 February 2010 в 21:16
поделиться

1 ответ

Насколько я понимаю, вы просто регистрируете кучу типов IExceptionHandler , а затем, когда вы запрашиваете IEnumerable Autofac 2 просто обо всем позаботится за вас.

Со страницы NewInV2 :

builder.RegisterType<A1>().As<IA>();
builder.RegisterType<A2>().As<IA>();

var container = builder.Build();

// Contains an instance of both A1 and A2
Assert.AreEqual(2, container.Resolve<IEnumerable<IA>>().Count());
6
ответ дан 7 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: