[英]Using Concrete class as type parameter for inherited generic base class
我有一个带有以下签名的基类
public class ReportViewModelBaseDTO<VT,DT>
像这样的具体课程
public class ChartViewModelDTO:ReportViewModelBaseDTO<ChartViewModel,ChartViewModelDTO>
我的问题是,我知道我的通用基类的第二个类型参数应该是具体类的类型。 我不想通过命名类然后再将该名称作为类型参数来重复自己。
有什么方法可以让我的通用基类将实际的具体类作为类型参数? 有人对更好的方法有什么建议吗?
编辑:
下面是我想如何使用DT的示例。 我从VT类型到Automapper之一创建了DT类型的实例。
public static DT Create(VT viewModel)
{
return Mapper.Map<VT,DT>(viewModel);
}
你是这个意思吗?
public class ReportViewModelBaseDTO<VT,DT> where DT : ReportViewModelBaseDTO<VT,DT>
现在,您的类“知道”第二个类型参数是其自身的具体实现。
对于示例方法,您可以执行以下操作:
public static DT Create(VT viewModel)
{
return Mapper.Map<VT, DT>(viewModel);
}
并将Mapper.Map
定义为:
private U Map<T, U>(ViewModel viewModel) where U : ReportViewModelBaseDTO<T,U>{...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.