我有这个dto
课程:
public class VehicleDto<T>
{
public string Id { get; set; }
public T TypeInfo { get; set; }
}
和T
可以是以下类别之一:
public class Machine
{
public string VId { get; set; }
public string MachineCategory{ get; set; }
}
public class Motor
{
public string MId { get; set; }
public string MotorCategory{ get; set; }
}
这是我的行动控制员:
[Route("")]
public async Task<IHttpActionResult> PostData(IList<VehicleDto<T>> input)
{
}
我希望从类型为VehicleDto
的客户端收到json,但T
可以是Motor或Machine我的意思是不同的T
类型,我知道T
只能是一种类型,但我如何在列表中有不同的类型。
一个解决方案是我有不同的Apis与不同类型的输入
但我想知道是否有另一种更好的方法。
编辑:
这是示例输入json:
[{"Id":"183","TypeInfo":{ "VId":"546","MachineCategory":"MCA"}},{"Id":"123","TypeInfo":{ "MId":"546","MotorCategory":"MTA"}}]
答案 0 :(得分:0)
如果您遵循相同的类结构而不是反序列化为单个对象,因为它们是两个不同的类Motor
和Machine
,
使用以下类结构实现它的一种方法:
public class Vehicle
{
public string Id { get; set; }
public VehicleDto VehicleDto { get; set; }
}
public class VehicleDto
{
public string VId { get; set; }
public string MachineCategory { get; set; }
public string MId { get; set; }
public string MotorCategory { get; set; }
}
将端点暴露为:
public async Task<IHttpActionResult> PostData(List<Vehicle>> input)
{
}