【发布时间】:2012-09-16 12:12:56
【问题描述】:
我想将 MailMessage 作为参数传递给我的 WCF Web 服务。问题是 MailMessage 不是可序列化的,并且它的许多属性(例如 MailAddress)也不是可序列化的。如何序列化?
我已经看到tutorial 用于通过将其用作包装类中的属性来对其进行序列化,但这无助于我通过 WCF 发送它,因为 MailMessage 属性未显示在客户端(因为它不可序列化)。我不想只发送基本的字符串值(to、from、body)。我想发送整个 MailMessage 及其所有属性。我该怎么做?
更新:
我认为使用 Web 服务和序列化 MailMessage 类根本不值得。序列化类确实有效,但它们的许多方法/构造函数在 WCF 客户端/消费者上不可用。因此,我不得不重新编写代码以在客户端从常规类(例如 MailMessage)转换为序列化类(例如 SerializedMailMessage)。
我决定使用 EmailHelper 创建一个类库,并使用调用应用程序的配置来确定 SMTP 设置。
SmtpSection smtpConfig = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
if (smtpConfig != null) {
// extract values to your SmtpClient
}
【问题讨论】:
-
检查一下.. 这是一个合理的方法... [stackoverflow.com/questions/447071/… [1]: stackoverflow.com/questions/447071/…
-
我看到了这些问题,但问题是 MailMessage 的属性,例如 MailAddress,也不能序列化。我想我只是将整个类及其属性的类重新制作为可序列化的类。我更喜欢的是一种扩展类并以这种方式使其可序列化的方法。
标签: c# web-services serialization mailmessage