繁体   English   中英

使用Concrete类作为继承的通用基类的类型参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM