2014-02-06 1 views
0

Мое приложение имеет общий IRepository интерфейс и несколько интерфейсов, которые расширяют его так:Использование MvvmCross IoC, Как я могу получить список синглтонов, реализующих общий интерфейс?

public interface IRepository 
{ 
    void Start(); 
    void Stop(); 
} 


public interface IFooRepository : IRepository 
{ 
// Foo specific methods  
} 

public interface IBarRepository : IRepository 
{ 
// Bar specific methods 
} 

Классы, реализующие IFooRepository и IBarRepository получить зарегистрированные в качестве одиночек, когда начинается приложение. Можно ли получить синглтоны как List<IRepository> с помощью локатора сервисов MvvmCross?

ответ

1

Там нет Api для этого в MvxSimpleIocContainer

Однако, вы можете легко реализовать этим себе отражение - просто использовать отражение перечислить все интерфейсы хранилища, наследуя и затем использовать Mvx.Resolve для получения одиночек, которые реализуют эти интерфейсы ,

В качестве альтернативы вы также можете посмотреть другие подходы, такие как перехват регистраций, которые происходят при запуске приложения - либо в массовой регистрации, либо в конструкторе BaseRepository.

+0

Thanks @Stuart! Я попробую один из этих подходов. – elevine

Смежные вопросы