C#Web服务和;嵌套复杂类型

C#Web服务和;嵌套复杂类型,c#,serialization,C#,Serialization,因此,我一直在使用这段代码来自动序列化我的“用户”业务对象,它一直工作得很好 [WebMethod] public MyUser GetUserFromCard(string code, string cardNumber) { var repo = new MyRepositry(cinemaCode); string parameters = string.Empty; parameters = MyRepositry.MakeParameter("CardNumbe

因此,我一直在使用这段代码来自动序列化我的“用户”业务对象,它一直工作得很好

[WebMethod]
public MyUser GetUserFromCard(string code, string cardNumber)
{
    var repo = new MyRepositry(cinemaCode);
    string parameters = string.Empty;
    parameters = MyRepositry.MakeParameter("CardNumber", cardNumber);

    return repo.FindMember(parameters);
}
返回这个xml

<MyUser>
  <BirthDate>1982-04-13T00:00:00</BirthDate>
  <Address>market st</Address>
  <Suburb>sydney</Suburb>
  <State>NSW</State>
  <Postcode>2000</Postcode>
  <UserName>test user</UserName>
  <Password>passw0rd</Password>
  <FirstName>test</FirstName>
  <LastName>user</LastName>
  <Email>test@land.com.au</Email>
  <ReceiveEmail>true</ReceiveEmail>
  <CardNumber>454543523443</CardNumber>
  <Points>10</Points>
  <Rewards>
    <Reward/>
    <Reward/>
  </Rewards>
</MyUser>

1982-04-13T00:00:00
市场街
悉尼
新南威尔士州
2000
测试用户
passw0rd
测试
用户
test@land.com.au
真的
454543523443
10
我的问题是奖励数组返回的元素数正确,但它们是空的。MyUser和Reward类都绝对没有用于执行自定义序列化的注释或其他方法


有什么想法吗?

你能展示一下
奖励课程吗?特别是,与
XmlSerializer
一起使用时,它必须有一个公共的无参数构造函数,并且所有*属性必须在gettersetter中都是公共的;因此,以下行为与您所描述的相同:

public class Reward {
    private readonly string name;
    public Reward(string name) {
        this.name = name;
    }
    public string Name {get {return name;}}
}
但这是可行的:


*=有一些小的警告。

您的权利,我缺少奖励对象上所有属性的setter。谢谢
public class Reward {
    public string Name {get;set;}
}