【发布时间】:2011-01-04 11:03:51
【问题描述】:
在 StockTraderRI 示例代码中,视图模型由 MEF 使用属性注入:
[Export(typeof(IOrdersView))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class OrdersView : UserControl, IOrdersView
{
public OrdersView()
{
InitializeComponent();
}
[Import]
[SuppressMessage("Microsoft.Design", "CA1044:PropertiesShouldNotBeWriteOnly", Justification = "Needs to be a property to be composed by MEF")]
public IOrdersViewModel ViewModel
{
set { this.DataContext = value; }
}
}
我想知道的是:为什么不使用这样的 ImportingConstructor 来注入 ViewModel:
[Export(typeof(IOrdersView))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class OrdersView : UserControl, IOrdersView
{
[ImportingConstructor]
public OrdersView(IOrdersViewModel ViewModel)
{
InitializeComponent();
this.DataContext = ViewModel;
}
}
StockTraderRI 示例确实使用属性而不是 ctor 的参数,是否存在我想念的特殊功能、问题或原因?
【问题讨论】: