2009-07-07 86 views
3

所以我一直使用此代码自动序列已被伟大的工作,我的“用户”的经营目标。C#的Web服务和嵌套复杂类型

[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>[email protected]</Email> 
    <ReceiveEmail>true</ReceiveEmail> 
    <CardNumber>454543523443</CardNumber> 
    <Points>10</Points> 
    <Rewards> 
    <Reward/> 
    <Reward/> 
    </Rewards> 
</MyUser> 

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

什么想法?

回答

2

您可以显示Reward类?特别是,对于XmlSerializer使用它必须有一个公共参数的构造函数和所有的*属性必须是公开的既干将制定者;所以下面就表现得像你所描述:

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;} 
} 

* =有一些小的警告。

+0

您的权利,我错过了我的奖励对象的所有属性的制定者。谢谢!! – 2009-07-08 10:40:44