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 始终为空(非空)。DateSent 很好。

我猜数据在序列化中丢失了,但我不知道为什么,或者如何解决这个问题。我还认为,这可能与电子邮件地址中的 @ 有关,但我已经排除了这种可能性。有什么建议么?

4

2 回答 2

3

发生这种情况是因为为描述您的服务而生成的 de WSDL 无法描述您的 get 和 set 函数中使用的函数。我建议您将 RecipientsString 保留为公共属性,并在您的类上创建一个私有方法 GetRecipients 来处理 RecipientsString 值并返回您需要的列表。

于 2012-08-21T14:15:43.187 回答
1

使用没有支持字段的 RecipientsString。

于 2012-08-21T14:17:06.637 回答