我之前已经问过这个问题,但它一般都是这样,所以我无法得到答案,所以我会在这里询问具体要点:
根据以下代码,我想使用MEF而不是使用(new)运算符重新编写此代码,但我遇到了以下需要解答的问题:
1-CountryViewModel(在构造函数中)如何创建具有参数构造函数的子RegionViewModel的集合并通过Model对象填充它?我尝试使用GetExportedValues<>()但没有成功,因为我无法将参数传递给构造函数,我无法使用linq查询来填充RegionViewModel,如代码中所示。
2-RegionViewModel如何在LoadChildren方法中加载StateViewModel的子视图模型集合 使用foreach块还使用MEF而不是new运算符?我也尝试使用GetExportedValues<>(),但我无法将参数传递给子视图模型
public class CountryViewModel
{
readonly ReadOnlyCollection<RegionViewModel> _regions;
public ReadOnlyCollection<RegionViewModel> Regions
{
get { return _regions; }
}
//---------------------------------------------------------
public CountryViewModel(Region[] regions)
{
_regions = new ReadOnlyCollection<RegionViewModel>(
(from region in regions
select new RegionViewModel(region))
.ToList());
}
}
public class RegionViewModel : TreeViewItemViewModel
{
readonly Region _region;
public RegionViewModel(Region region)
: base(null, true)
{
_region = region;
}
public string RegionName
{
get { return _region.RegionName; }
}
protected override void LoadChildren()
{
foreach (State state in Database.GetStates(_region))
base.Children.Add(new StateViewModel(state, this));
}
}