2012-01-20 2 views
4

웹 서비스에서 사용하기 위해 System.Net.MailMessage 클래스를 상속하고 수정합니다. 다른 이유로 MailMessage라는 이름으로 보관해야합니다. 아래 코드에서 이것을 사용할 때 아래 오류가 발생합니다.기존 .Net 클래스 직렬화 오류 상속

"유형 '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() 
     { 

     } 
    } 
} 
+2

[XmlType (Namespace = "test")]로 하위 클래스의 속성을 분석하십시오. –

+0

BTW, ASMX 웹 서비스는 레거시 기술이며 새로운 개발에 사용해서는 안된다는 사실을 알고 계십니까? –

답변

7

당신은 자체

using System.Xml.Serialization 

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

그러나 직렬화를 위해 고유 System.Net.Mail.MailMessage을 확인하기 위해 이름이나 네임 스페이스를 변경 XmlTypeAttribute를 추가해야하는 직렬화 할 수없는 그래서 그것에서 파생 된 클래스가되지 않습니다 직렬화 가능.

+0

이것이 가능하지 않다는 뜻입니까? – SchwartzE

+0

직접 직렬화해야합니다. http://www.keyvan.ms/how-to-serialize-a-mailmessage –