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