C#Web Services&嵌套复杂类型

时间:2009-07-07 08:06:09

标签: c# serialization

所以我一直在使用这段代码来自动序列化一直运行良好的“用户”业务对象。

[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>

我的问题是奖励数组返回正确数量的元素,但它们是空的。 MyUser和Reward类都绝对没有注释或其他方法来执行自定义序列化。

任何想法?

1 个答案:

答案 0 :(得分:2)

你能展示Reward班吗?特别是,要与XmlSerializer一起使用,它必须具有公共无参数构造函数,并且所有*属性必须公开,同时具有getter setter;所以下面的行为就像你描述的那样:

public class Reward {
    private readonly string name;
    public Reward(string name) {
        this.name = name;
    }
    public string Name {get {return name;}}
}

工作:

public class Reward {
    public string Name {get;set;}
}

* =有一些小问题。