我有这个对象:
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很好。
我猜测数据在序列化中丢失了,但我不知道为什么,或者如何解决这个问题。我还想,它可能与电子邮件地址中的@有关,但我已经排除了这一点。有什么建议吗?
答案 0 :(得分:3)
这是因为为描述您的服务而生成的de WSDL无法描述get和set函数中使用的函数。我建议你将RecipientsString作为公共属性,并在你的类上创建一个私有方法GetRecipients,它处理RecipientsString值并返回你需要的列表。
答案 1 :(得分:1)
使用不带后备字段的RecipientsString。