我设置了一个 WebApi 控制器,它应该返回一组不同类型的对象。请看一下我的虚拟代码:
interface IDish
{
int ID { get; set; }
string Name { get; set; }
}
class Steak : IDish
{
public int ID { get; set; }
public string Name { get; set; }
public string CookingStyle { get; set; }
public int Weight { get; set; }
}
class Soup : IDish
{
public int ID { get; set; }
public string Name { get; set; }
}
class Dessert : IDish
{
public int ID { get; set; }
public string Name { get; set; }
public bool ContainsSugar { get; set; }
}
public class DishController : ApiController
{
public IEnumerable<IDish> Get()
{
var dishes = busisnessLogic.GetDishes();
return dishes;
}
}
如您所见,在控制器中,我正在从业务逻辑中检索 IDish 的集合。请不要过多关注具体的类。它们只是示例,使这里的事情更容易解释。真实的商业背景完全不同。
那么,我的问题是什么?当 API 控制器返回 IDish(在我的例子中为 Json)时,只有 IDish 接口的公共属性被写入 Json 输出。
相反,我希望将具体类的所有公共属性写入 Json 输出。因此,例如,如果 IDish 是“牛排”,我想写出它的 ID、名称、烹饪风格和重量。因此,如果它是“汤”,则只有 ID 和名称,如果它是“甜点”,则只有 ID、名称和 ContainsSugar。
有没有简单的方法来实现这一目标?有时我往往看不到树林前的树木......;-)
多谢你们!