我在 .NET 4.5 中找不到 System.ComponentModel.Composition.Initialization.dll(其中包含 CompositionInitializer 类的声明)。此程序集是否已从 .NET 4.5 中的 MEF 中删除? 我现在如何组合标记有 [Export] 和 [Import] 属性的应用程序的各个部分?
假设我有这样的观点:
internal partial class StartWindow : Window
{
public StartWindow()
{
InitializeComponent();
DataContext = ViewModel;
}
[Import]
public IStartWindowViewModel ViewModel { get; set; }
}
和适当的 ViewModel:
[Export]
internal class StartWindowViewModel : IStartWindowViewModel
{
public IEnumerable<Customer> Customers { get; set; }
}
我应该在我的 shell(或其他地方)中添加什么来组成这些部分?
最佳答案
CompositionInitializer
和类似的类存在于 Silverlight 中,但不存在于完整的 .NET Framework 中。 MEF 团队有目的地决定将它们排除在外,因为他们觉得它们不合适。
逻辑是应该改用构造注入(inject)。
话虽这么说,在 Silverlight 中应用的使用类的逻辑在 WPF 中应用完全相同。我有 blogged about this in .NET 4 ,并包含适用于整个框架的实现。
关于c# - MEF 4.5 中缺少 CompositionInitializer。我可以用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633470/