【发布时间】:2014-12-28 15:39:07
【问题描述】:
我有以下抽象基类:
public abstract class MasterDataViewModel<TPrimaryModel> : ViewModel
where TPrimaryModel : TwoNames, new()
{
...
}
我有一些派生类,例如:
public class ConsignorViewModel : MasterDataViewModel<Consignor>
{
protected override void Find()
{
...
foreach (Consignor consignor in consignors)
{
ConsignorViewModel viewModel = new ConsignorViewModel(consignor, consignor.Address);
SearchResults.Add(viewModel);
}
...
}
}
我想将 Find 方法移至我的基类。问题是构造函数调用,这在我的抽象类中是不可能的。它必须是这样的:
protected override void Find()
{
...
foreach (TPrimaryModel primaryModel in results)
{
MasterDataViewModel<TPrimaryModel> viewModel = new MasterDataViewModel(primaryModel, primaryModel.Address);
SearchResults.Add(viewModel);
}
...
}
它不起作用,因为不允许在抽象类中调用构造函数。还有其他解决方案吗?我想到了另一个通用的。问题是一个新的约束不能有任何参数,所以这也不起作用。
【问题讨论】: