我已经开始在VS2005中开发新的Web服务。只有一种方法:
[WebMethod]
[XmlInclude(typeof(Person))]
public PersonAction GetAction()
{
PersonAction action = new PersonAction();
return action;
}
其中PersonAction
类包含一个引用Person
类
[Serializable]
public class PersonAction
{
private string actionName = "XAction";
private Person person1;
private Person person2;
public PersonAction()
{
this.person = new Person();
this.person.Name = "P1";
}
public string Name
{
get
{
return this.actionName;
}
}
[XmlElement(Type = typeof(Person))]
public Person Person1
{
get
{
return this.person1;
}
}
}
我已经构建了它,运行它...但是wsdl它总是包含PersonAction
的空标签...没有可用的嵌入式类型的定义,所以我在客户端总是得到null。
XmlElement
,XmlInclude
,[Serializable]
显然没效果......
我确信我会错过一些东西 肯定有人在过去遇到过这个问题,并且知道解决方案。我真的很感激VS2005(.NET 2.0)的任何代码都会有所帮助。
谢谢
答案 0 :(得分:1)
使变量公开的变化似乎解决了这个问题,但事实并非如此。该服务现在序列化公共变量,而不是属性。
尝试将变量更改回私有,并添加“setter”函数。我认为这是序列化所必需的。
答案 1 :(得分:0)
您的Person Action类可能缺少XmlRoot属性。 XmlInclude也可能是不必要的。
编辑添加: