首页 > 解决方案 > Caliburn.Micro 使用 Xamarin.Forms 应用程序注入集合

问题描述

我将Caliburn.MicroXamarin.Forms结合使用。在我的 App 类中,我通过 SimpleContainer 的 PerRequest 方法向类 LicenseInfoImplementation 注册了一个接口 ILicenseInfo。然后,CM 在创建我的视图模型时注入一个对象(请参阅 ViewModelOne),这正是我想要的。但是,我不知道如何将其扩展到对象集合。假设我希望 CM 实例化 ViewModelTwo ,它需要一个对象集合。我将如何更改 App.cs 和 ViewModelTwo 的 XAML 才能实现这一点?

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 
}

标签: xamarin.formscaliburn.micro

解决方案


我终于使用了以下模式。不是最优雅的方式,而是我发现的最好的方式......

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

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

推荐阅读