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

标签 c# asp.net xml 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()
        {

        }
    }
}

最佳答案

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

using System.Xml.Serialization

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

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

关于c# - 继承现有的 .Net 类序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8946405/

相关文章:

c# - 为什么我的是int?是否需要验证值?

sql-server - 从数据库中检索数据时如何转义特殊字符?

java动画android持续时间

c# - 在不重定向 MVC3 中的用户的情况下覆盖 RenderBody 内容

c# - 在 Jenkins 中使用 rasdial 命令

c# - 如何使用 C# 创建一个对象以统一在两个位置之间移动,为什么我的代码不起作用?

c# - Discord.NET 等待外部命令

c# - 获取不同项目及其数量的列表

c# - 如何使 paypal 按钮在 asp.net webform 中工作

java - 手动更改进度条颜色