[Export]
public class MyViewModel : NotificationObject
{
public MyViewModel(Foo foo)
{
DoWorkCommand = new DelegateCommand(DoWork);
MyFoo = foo;
}
[Import]
private IBarService MyBarService { get; set; }
public Foo MyFoo { get; private set; }
public DelegateCommand DoWorkCommand { get; set; }
public void DoWork()
{
MyBarService.DoSomething(MyFoo);
}
}
如何获得MyViewModel类的实例,同时还能够传入参数?我想也许ExportFactor<T>
会让我通过一些参数,但它不会。那么,是否有某种模式可以解释我希望实现的目标?MEF - 任何方式用参数初始化它?
只是做一个新的()不会削减它,因为MyBarService
保持为null。我想过删除ExportAttribute
并使用ComponentInitializer.SatisfyImports(this)
,这让我使用new(),但这样做使得我必须new()所有东西。我有点希望有一个两全其美的世界......有某种方式来导入某些参数。这样我仍然是解耦的,但能够通过设置参数生成我的ViewModel的实例。
不需要。除非Foo使用ExportAttribute标记,否则这将不起作用,此时我可以使用ImportAttribute标记该字段。 – michael