2011-12-21 51 views
0

這裏是Web服務:ASMX WebService的返回XmlNode的,而不是自定義對象

自定義類:

public class A 
{ 
    public A() 
    { 
    } 
    public B prop { get; set; } 
} 

public class B 
{ 
    public B() 
    { 
    } 
    public A prop { get; set; } 
} 

WEBMETHOD:

[WebMethod] 
[XmlInclude(typeof(A))] 
public object Test() 
{ 
    A a = new A(); 
    a.prop = new B(); 

    return a; 
} 

下面是客戶端:

Service ws = new Service(); 
var response = ws.Test(); 

那麼,爲什麼是th e webservice返回XmlNode列表而不是類A?如何解決它?

PS:如果我評論public A prop { get; set; }線,它的工作原理

+0

僅供參考,'[Serializable接口]'屬性不使用XML序列化。 – 2012-03-26 00:22:42

+0

好的,刪除。任何想法如何解決這個循環序列化問題? – Soulblaster 2012-04-04 14:50:17

+0

沒有問題。你告訴它返回'object',所以它返回最普通的可能類型。如果你不是指'object',那麼不要返回'object'。 – 2012-04-04 15:53:50

回答

1

好了,找到了解決辦法:

我可以使用的包裝,像這樣:

或者我使用[return:]屬性,如下所示:

[WebMethod] 
[return: XmlElement(typeof(A))] 
public object Test() 
{ 
    A a = new A(); 
    a.prop = new B(); 

    return a; 
} 

關於屬性的目標:

相關問題