2
我有我的设计问题:泛型与继承设计 - 需要帮助解决
我有一些基类
public class ReportConfig<T> where T: class
{
public string ReportSavePath { get; set; }
public string ReportTitle { get; set; }
public T ReportData { get; set; }
}
这个类可以扩展到(可能的子类的一个提交) :
public class CsvReportConfig<T> : ReportConfig<T> where T : class
{
// some extra class specific props
}
然后,我有一个ReportGenerator抽象类
public abstract class ReportGenerator<T> where T : ReportConfig<T>
{
public ReportGenerator(ReportConfig<T> config)
{
Config = config;
}
public ReportConfig<T> Config { get; set; }
public abstract ReportGenerationResult GenerateReport();
}
然后,我想在ReportGenerator
类延伸到:
public class Csv1ReportGenerator : ReportGenerator<CsvReportConfig<DataObj>>
{
public Csv1ReportGenerator (CsvReportConfig<DataObj> config) : base(config)
{
}
public override ReportGenerationResult GenerateReport()
{
throw new NotImplementedException();
}
}
在这里,我收到的错误
CsvReportConfig<DataObj>
不能被用作类型参数“T”在 通用类型或方法ReportGenerator<T>
。
我在做什么错误以及如何纠正?
是的,正是我想通了 - 这是正确的答案。谢谢 – pitersmx
你能解释一下,OP的代码有什么问题,以及为什么你的解决方案真正解决了它? –
我错过了一些泛型约束条件 – pitersmx