Asp.net ASMX WebService返回XmlNode而不是自定义对象

Asp.net ASMX WebService返回XmlNode而不是自定义对象,asp.net,object,serialization,asmx,xmlnode,Asp.net,Object,Serialization,Asmx,Xmlnode,以下是Web服务: 自定义类: 公共A类 { 公共A() { } 公共B属性{get;set;} } 公共B级 { 公共图书馆B() { } 公共属性{get;set;} } Webmethod: [WebMethod] [xmlclude(类型(A))] 公共对象测试() { A=新的A(); a、 prop=新的B(); 返回a; } 以下是客户端: servicews=newservice(); var response=ws.Test(); 那么,为什么webservice返回的是

以下是Web服务:

自定义类:

公共A类
{
公共A()
{
}
公共B属性{get;set;}
}
公共B级
{
公共图书馆B()
{
}
公共属性{get;set;}
}
Webmethod:

[WebMethod]
[xmlclude(类型(A))]
公共对象测试()
{
A=新的A();
a、 prop=新的B();
返回a;
}
以下是客户端:

servicews=newservice();
var response=ws.Test();
那么,为什么webservice返回的是XmlNode列表而不是类A?如何解决


PS:如果我注释
public一个prop{get;set;}
行,它会工作

好的,找到解决方案:

我可以用一个包装器,像这样:

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

[WebMethod]
[返回:xmlement(typeof(A))]
公共对象测试()
{
A=新的A();
a、 prop=新的B();
返回a;
}
关于属性目标:


仅供参考,
[Serializable]
属性未被XML序列化使用。好的,已删除。有没有办法解决这个循环序列化问题?没有问题。您让它返回
对象
,因此它返回的是最通用的类型。如果您不是指
对象
,那么不要返回
对象
。这里的要点是,如果我注释
公共属性{get;set;}
,它将按预期返回属性。如何在不注释代码行的情况下实现这一点?