Как получить конкретный компонент из контейнера Autofac

Я регистрирую в Autofac несколько классов под одним интерфейсом:

ContainerBuilder.RegisterType<Class1>().As<MyInterface>();
ContainerBuilder.RegisterType<Class2>().As<MyInterface>();

Затем я хочу получить только Class2, как мне это сделать? Я не хочу использовать перечисление, а затем вычислять конкретный тип из контейнера:

//Нежелательный длинный способ
Class2 myClass2 = null;
using(var scope = Container.BeginLifetimeScope())
{
   IEnumerable<MyInterface> items = scope.Resolve<IEnumerable<MyInterface>>();
   foreach(var item in items)
      if(item.GetType() == typeof(Class2))
         myClass2 = (Class2)item;
}

Ответы (1 шт):

Автор решения: aepot

Если вам нужно вызывать тип конкретно, при этом не теряя возможность получить коллекцию экземпляров по интерфейсу, то надо изменить регистрацию

builder.RegisterType<Class2>().As<MyInterface>().AsSelf();
Class2 item = scope.Resolve<Class2>();
→ Ссылка