我碰到了墙壁。我添加了具有Service类的另一个程序集的引用。 因此,而不是创建一个新的实例我虽然这MEF将有助于(但不会)的。我做一些类似HelloScreens sample.The以下视图模型的东西接受的属性也保存模型。(职员)MEF caliburn micro
public class StaffFormViewModel : Screen
{
[Import]
public StaffService staffService { get; set; }
显然,这不起作用,因为班级不是由MEF构建的。但是,即使我想与MEF我应该创建多个实例来构建它,所以我应该选择非共享。但人们说,它的缓慢。 Caliburn微示例添加了类似的东西,以创建新的实例。这需要每行5行代码。
batch.AddExportedValue<Func<PreferencesCategoriesFormViewModel>>(
() => container.GetExportedValue<PreferencesCategoriesFormViewModel>());
的问题是,虽然如果我想以提供构造模型类我不能,因为它是由MEF建立我可以用这个呢。我应该亲自设置财产。 我只想要注入所需的服务。这不可能与mef?我应该公开静态的容器,所以我可以参考它,并呼吁撰写?请帮助:)
谢谢,但我想注入一个服务类,而不是由mef构造的类 – GorillaApe
同样的原则适用,它只是你的视图模型构造函数将会改变,或者你的工厂方法来获取它需要的数据。例如。你可以使用Func或者创建一个接口类型和一个接受你的数据类型的方法。我链接到的视图模型工厂也支持参数。 –
devdigital
3看起来不错,因为cm解决方案对我来说很难看。所以工厂似乎是2或3的解决方案。 – GorillaApe