我将 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
}
答案 0 :(得分:0)
我最终使用了以下模式。不是最优雅的方法,而是我发现的最好方法...
public ViewModelTwo() : base (IoC.GetAll<ILicenseInfo>())
{
}
public ViewModelTwo(IEnumerable<ILicenseInfo> licenses)
{
// Do something with licenses
}