Autofac Resolve <IEnumerable <T>> () возвращает пустой список - PullRequest
4 голосов
/ 13 января 2012

Я прочитал множество документов / вики Autofac, которые указывают, что я могу получить список всех зарегистрированных типов, выполнив что-то простое, как показано ниже:

var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .AssignableTo<IPersistedModel>();
var container = builder.Build();
var allTypes = container.Resolve<IEnumerable<IPersistedModel>>();

Проблема в том, что все типы появляются пустыми.

В отладчике я вижу внутри контейнера 7 подходящих типов и даже массив IPersistedModel ... но они не возвращаются в Resolve ().

Что мне не хватает?

1 Ответ

6 голосов
/ 13 января 2012

Вам необходимо зарегистрировать типы в качестве интерфейса, используя .As<IPersistedModel>() или для всех его интерфейсов, используя .AsImplementedInterfaces():

builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
            .AssignableTo<IPersistedModel>()
            .AsImplementedInterfaces();
...