Caliburn.Micro впрыскивает коллекцию с помощью приложения Xamarin.Forms - PullRequest
0 голосов
/ 25 мая 2018

Я использую Caliburn.Micro в сочетании с Xamarin.Forms .В моем классе App я регистрирую интерфейс ILicenseInfo с классом LicenseInfoImplementation через метод PerRequest SimpleContainer.Затем CM создает объект, когда создается моя модель представления (см. ViewModelOne), что я и хочу.Тем не менее, я не понимаю, как я могу расширить это на коллекцию объектов.Допустим, я бы хотел, чтобы CM создал экземпляр ViewModelTwo, который ожидает коллекцию объектов.Как бы мне пришлось изменить App.cs и XAML ViewModelTwo, чтобы это произошло?

public partial class App : FormsApplication
{
    private readonly SimpleContainer _container;

    public App (SimpleContainer container)
    {
        InitializeComponent();
        this._container = container;    
        // register interface and class
        _container.PerRequest<ILicenseInfo, LicenseInfoImplementation>();   
        //....
    }
}

public ViewModelOne(ILicenseInfo license)
{
    // Great, Caliburn.Micro injects an LicenseInfoImplementation object
}

public ViewModelTwo(IEnumerable<ILicenseInfo> licenses)
{
    // No idea 
}

1 Ответ

0 голосов
/ 13 августа 2018

Я наконец-то использовал следующую схему.Не самый элегантный способ сделать это, но лучшее, что я нашел ...

public ViewModelTwo() : base (IoC.GetAll<ILicenseInfo>())
{
}

public ViewModelTwo(IEnumerable<ILicenseInfo> licenses)
{
// Do something with licenses
}
...