Caliburn.Micro使用Xamarin.Forms应用程序注入一个集合

时间:2018-05-24 23:09:12

标签: xamarin.forms caliburn.micro

我将 Caliburn.Micro Xamarin.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 
}

1 个答案:

答案 0 :(得分:0)

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

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

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