0

私はこのオブジェクトを持っています:

public class Announcement
    {
        public int Id { get; set; }
        public DateTime  DateSent { get; set; }
        private IList<string> _recipients;
        public IList<string> Recipients
        {
            get { return _recipients; }
            set { _recipients = value; }
        }

        public string RecipientsString 
        {
            get { return String.Join("\n", _recipients); }
            set { _recipients = value.Split('\n').ToList(); }
        }
    }

このオブジェクトに DateSent と RecipientString (\n で区切られた電子メール アドレスの文字列) を入力し、問題なくデータベースに保存できます。

これを Web サービスに移行して、複数のアプリで使用できるようにします。

Webサービスでまったく同じオブジェクトを作成し、ローカルで(サービス上で)テストすると、すべてが期待どおりに機能します。

しかし、クライアントにオブジェクトを設定し、それをサービスに渡して保存すると、RecipientString は常に空 (null ではない) になります。DateSent は問題ありません。

シリアル化でデータが失われていると推測していますが、その理由や解決方法がわかりません。また、メールアドレスの@に関係があるのではないかと思いましたが、それは除外しました。助言がありますか?

4

2 に答える 2

3

これは、サービスを記述するために生成された WSDL が、get および set 関数で使用される関数を記述できないために発生します。RecipientsString を共通プロパティとして保持し、RecipientsString 値を処理して必要なリストを返すプライベート メソッド GetRecipients をクラスに作成することをお勧めします。

于 2012-08-21T14:15:43.187 に答える
1

バッキング フィールドなしで RecipientsString を使用します。

于 2012-08-21T14:17:06.637 に答える