我有这个通用类:
public abstract class FilterPage<T> where T : IResponse
{
protected List<T> apiResults;
public abstract List<T> Post();
}
从FilterPage继承的此类:
public class ExportImportPage : FilterPage<DemandExportReport>
{
public override List<DemandExportReport> Post()
{
return apiResults = API.Post<List<DemandExportReport>>(FilterReqtUrl);
}
}
public class DemandExportReport : IResponse
{
...
}
这里有我要进行初始化的类:
class TestClass
{
public void Method1()
{
FilterPage<DemandExportReport> myInst = new ExportImportPage();
}
public void Method2()
{
// I want to use myInst here.
}
}
在TestClass中,如果我在myInst
中将Method1()
声明并初始化为FilterPage<DemandExportReport> myInst = new ExportImportPage()
,则可以正常工作。我的问题是我在编译时不知道类型。我可以使用其他类型来代替DemandExportReport
。我想在Method1()
中初始化myInst,然后在其他方法中使用它,从而能够调用myInst.Post()
。因此,我想不使用myInst
来声明FilterPage<DemandExportReport> myInst;
,因为我想使用FilterPage
而不是DemandExportReport
的几种类型?
注意:如果我创建一个非通用基类,假设BaseFilterPage
,然后从其中继承FilterPage<t>
,则可以声明一个{{1 }}实例类。问题在于,使用该变量,我无权访问BaseFilterPage
方法。而且我无法将Post()
声明移至Post()
,因为它是通用方法。