xamarin.forms - Caliburn.Micro 使用 Xamarin.Forms 应用程序注入集合
问题描述
我将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
}
解决方案
我终于使用了以下模式。不是最优雅的方式,而是我发现的最好的方式......
public ViewModelTwo() : base (IoC.GetAll<ILicenseInfo>())
{
}
public ViewModelTwo(IEnumerable<ILicenseInfo> licenses)
{
// Do something with licenses
}
推荐阅读
- reactjs - 开玩笑测试 React Native:找不到导航对象。您的组件是否在导航器的屏幕内?
- altair - 无法让 transform_filter 在 Altair 中工作
- heroku - Heroku部署卡在构建中
- parquet - 如何获取行组的大小/偏移范围结束
- excel - 复制以“=”符号开头的单元格值并将其粘贴为字符串/文本
- spring-boot - http 响应负载未完成
- javascript - 带有 D3 的桑基图 - 链接着色
- swift - 本地 Swift 包在 Xcode 13 中停止工作
- python - 如何在 Python-VTK 中禁用 VTK 的热键
- matlab - 静态相机手眼标定算法参数错误