假设我发布这样的对象
{"Dto" : {
"DtoId" : 1,
"DtoThing" : "Some value",
"DtoChildStuff" : [{"CsId" : 1, "ChildProperty" : "SomeThing"}]
}}
像这样的 WebApi 动作
[HttpPost]
public Response<MyDto> Post(DtoWrapper<MyDto> input)...
其中参数只是一些具有 MyDto 类型的属性 MyDto 的对象,而 MyDto 是这样的
[DataContract]
public class MyDto
{
[DataMember]
public int DtoId {get;set;}
[DataMember]
public string DtoThing {get;set;}
[DataMember]
public List<ChildStuffDto> DtoChildStuff {get;set;}
}
[DataContract]
public class ChildStuffDto
{
[DataMember]
public int CsId {get;set;}
[DataMember]
public string ChildProperty {get;set;}
}
并且(顺便说一下) DtoWrapper 只是
public class DtoWrapper<T>
{
public T Dto {get;set;}
// So that I can add some other info that I need //
}
为什么动作看不到任何子对象。如果我将参数上的类型更改为对象,我可以看到正在发布的子对象,但它不会被反序列化。有任何想法吗?