我撞到了一堵墙。我添加了另一个具有服务类的程序集的引用。因此,尽管 MEF 会有所帮助(但不会),但我没有创建一个新实例。我做了类似于 HelloScreens 示例的事情。以下视图模型也接受一个包含模型的属性。(工作人员)
public class StaffFormViewModel : Screen
{
[Import]
public StaffService staffService { get; set; }
显然这不起作用,因为该类不是由 MEF 构建的。但即使我想用 mef 构建它,我也应该创建多个实例,所以我应该选择NonShared。但人们说它很慢。Caliburn 微示例添加了类似的内容以创建新实例。这需要每件事 5 行代码。
batch.AddExportedValue<Func<PreferencesCategoriesFormViewModel>>(
() => container.GetExportedValue<PreferencesCategoriesFormViewModel>());
问题是,虽然我可以使用它,但如果我想在构造函数中提供一个模型类,我不能,因为它是由 MEF 构造的。我应该手动设置属性。我想要的只是注入所需的服务。这对mef不可能吗?我是否应该将容器公开静态以便我可以引用它并调用 compose?请帮忙 :)