2011-12-21 3 views
0

Вот вебсервис: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(); 

Итак, почему e webservice возвращает список XmlNode вместо класса A? Как его решить?

PS: если я комментирую public A prop { get; set; } линия, она работает

+0

FYI, то '[Serializable]' атрибут не используется XML сериализации. –

+0

Хорошо, удален. Любые идеи, как решить эту проблему сериализации цикла? – Soulblaster

+0

Нет проблем. Вы сказали ему вернуть «объект», поэтому он возвращает наиболее общий возможный тип. Если вы не имели в виду 'object', то не возвращайте' object'. –

ответ

1

Хорошо, нашел решение:

я мог бы использовать обертку, как это:

Или я использую атрибут [return:], например:

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

    return a; 
} 

О целевых атрибутов:

Смежные вопросы