2009-07-07 19 views
3

私はこのコードを使用して、自動的に "User"ビジネスオブジェクトをシリアライズしています。このXMLC#Webサービスとネストされた複合型

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

私の問題を返して

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

は報酬配列は要素の正しい数を返しているが、それらが空であることです。 MyUserクラスとRewardクラスの両方には、カスタムシリアル化を実行するための注釈やその他のメソッドは絶対にありません。

すべてのアイデア?

答えて

2

Rewardクラスを表示できますか?特に、XmlSerializerで使用するには、パブリックなパラメータのないコンストラクタが必要です。すべての*プロパティは、getter のセッターで公開されている必要があります。その次は、説明してきたように振る舞います:

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

あなたの権利、私は報酬オブジェクトのすべてのプロパティの設定者が不足していました。ありがとう!! –

関連する問題