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

本文关键字:序列化 错误 Net 继承 | 更新日期: 2023-09-27 18:20:52

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

"类型‘System.Net.Mail.MailMessage’和‘TestWebService.MailMessage‘都使用命名空间中的XML类型名称‘MailMessage’"http://tempuri.org/"。使用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()
        {
        }
    }
}

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

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

using System.Xml.Serialization
[XmlType(Namespace = "http://tempuri.org/", TypeName = "SomethingOtherThanMailMessage")]
public class MailMessage : System.Net.Mail.MailMessage
{
}

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