我不知道你为什么不使用
Task<ActionResult<List<Object>>>
作为返回类型。你想要
Object
类型必须是中指定的类型之一(
ProdDetailsStandard
,
ProdDetailsVariant
,
ProdDetailsFancy
……)?
如果是,您可以创建一个基础对象,使所有返回类型扩展此基础对象
public class IProdDetails{}
public class ProdDetailsStandard : IProdDetails
{
//...
}
public class ProdDetailsVariant : IProdDetails
{
//...
}
public class ProdDetailsFancy : IProdDetails
{
//...
}
然后,在您的
GetProductDetails
action,使用基础对象作为返回类型。
[HttpGet("prodDetails")]
public async Task<ActionResult<List<IProdDetails>>> GetProductDetails(string productID)
{
// get product type from SQL Server database
if (productType == 1)
{
List<ProdDetailsStandard> listStandard = new List<ProdDetailsStandard>();
// add items to list
return listStandard.Cast<IProdDetails>().ToList();
}
if (productType == 2)
{
List<ProdDetailsVariant> listVariant = new List<ProdDetailsVariant>();
// add items to list
return listVariant.Cast<IProdDetails>().ToList();
}
if (productType == 3)
{
List<ProdDetailsFancy> listFancy = new List<ProdDetailsFancy>();
// add items to list
return listFancy.Cast<IProdDetails>().ToList();
}
//.....
}
现在,只有具有扩展基础对象的对象才能作为返回类型。我希望这个答案能给你一些帮助。