我正在继承和修改System.Net.MailMessage类,以便在Web服务中使用。出于其他原因,我需要将其命名为MailMessage。当我在下面的代码中使用它时,我得到以下错误。
“Types'Net.Mail.MailMessage'和'TestWebService.MailMessage'都使用来自命名空间'http://tempuri.org/'的XML类型名称'MailMessage'。使用XML属性为类型指定唯一的XML名称和/或名称空间。“
我相信我必须添加XMLRoot和Type属性,但我似乎无法找出正确的组合。我该怎么做才能解决此错误?
namespace TestWebService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string Test(MailMessage emailMessage)
{
return "It Worked!";
}
}
}
namespace TestWebService
{
public class MailMessage : System.Net.Mail.MailMessage
{
public MailMessage() : base()
{
}
}
}
答案 0 :(得分:8)
您必须添加XmlTypeAttribute
才能更改名称或命名空间,使其成为序列化的唯一
using System.Xml.Serialization
[XmlType(Namespace = "http://tempuri.org/", TypeName = "SomethingOtherThanMailMessage")]
public class MailMessage : System.Net.Mail.MailMessage
{
}
但是,System.Net.Mail.MailMessage
本身不是可序列化的,因此从中派生的类将不可序列化。