2012-01-20 20 views
4

Webサービスで使用するためにSystem.Net.MailMessageクラスを継承して変更しています。他の理由でMailMessageという名前を付けておく必要があります。下のコードでこれを使用すると、私は以下のエラーを受け取ります。既存の.Netクラスの継承エラーを継承する

"タイプ 'System.Net.Mail.MailMessage'と 'TestWebService.MailMessage'は両方とも、名前空間 'http://tempuri.org/'からXMLタイプ名 'MailMessage'を使用します。固有のXML名や型名空間を指定してください。 "

私はXMLRootとType属性を追加する必要がありますが、正しい組み合わせを見つけることはできません。このエラーを解決するには何が必要ですか?あなたはそれがユニーク

using System.Xml.Serialization 

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

シリアライズ

のために作るために名前または名前空間を変更するには XmlTypeAttributeを追加する必要が

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() 
     { 

     } 
    } 
} 
+2

[XmlType(Namespace = "test")]を使用してサブクラスを帰属させてください。 –

+0

ところで、ASMX Webサービスは従来の技術であり、新しい開発には使用しないでください。 –

答えて

7

しかし、System.Net.Mail.MailMessage自体はシリアライズではありませんので、そこから派生しているクラスはなりませんシリアライズ可能。

+0

これはこれができないということですか? – SchwartzE

+0

自分でシリアル化する必要があります。 http://www.keyvan.ms/how-to-serialize-a-mailmailessage –