C# MEF和MVVM—添加约定的方法?
有没有办法钩住CompositionContainer的内部 例如,假设在对以“View”结尾的导出调用导入时,我可能希望将以“ViewModel”结尾的导出注入到其DataContext中 有办法吗?我试图在每个视图中避免这样的代码:C# MEF和MVVM—添加约定的方法?,c#,.net,mvvm,dependency-injection,mef,C#,.net,Mvvm,Dependency Injection,Mef,有没有办法钩住CompositionContainer的内部 例如,假设在对以“View”结尾的导出调用导入时,我可能希望将以“ViewModel”结尾的导出注入到其DataContext中 有办法吗?我试图在每个视图中避免这样的代码: [Export("MainView")] public partial class MainView : Window { [ImportingConstructor] public MainView([I
[Export("MainView")]
public partial class MainView : Window
{
[ImportingConstructor]
public MainView([Import("MainViewModel")] dynamic viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
最好简化为这一点,并使用约定:
[Export("MainView")]
public partial class MainView : Window
{
public MainView()
{
InitializeComponent();
}
}
有一些人在做这件事,显然包括Mef团队:) 以下是一篇您可能会感兴趣的博客文章: 下面是另一个稍微不太详细的例子:
我想您正在寻找一个可以减少工作量的库或框架
请看一下图书馆。我用得很好。到目前为止,我想到的最好办法是使用一个IViewLocator服务来完成这项工作,然后总是使用它来导入视图。