使用Web服务时不保存的一个属性

时间:2012-08-21 13:54:35

标签: c# asp.net-mvc wcf entity-framework

我有这个对象:

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服务,以便我们可以在多个应用程序中使用它。

我在webservice中创建了完全相同的对象,并在本地测试(在服务上)一切都按预期工作。

但是如果我填充客户端上的对象并将其传递给要保存的服务,则RecipientString始终为空(不为null)。 DateSent很好。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

使用不带后备字段的RecipientsString。