继承现有的.Net类序列化错误

Sch*_*tzE 4 c# xml asp.net web-services asmx

我继承并修改System.Net.MailMessage类以用于Web服务.出于其他原因,我需要将其命名为MailMessage.当我在下面的代码中使用它时,我得到以下错误.

"类型'System.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()
        {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ami*_*t_g 8

您必须添加XmlTypeAttribute以更改名称或命名空间,以使其对序列化而言是唯一的

using System.Xml.Serialization

[XmlType(Namespace = "http://tempuri.org/", TypeName = "SomethingOtherThanMailMessage")]
public class MailMessage : System.Net.Mail.MailMessage
{
}
Run Code Online (Sandbox Code Playgroud)

但是,System.Net.Mail.MailMessage它本身不是可序列化的,因此从它派生的类将不可序列化.