我需要使用WebClient调用web方法(不添加引用)。 Web方法将一系列部门作为参数。
public class Departement
{
[XmlElement (Namespace = "http://tempuri.org/")]
string Id;
[XmlElement (Namespace = "http://tempuri.org/")]
List<Student> listStident = new List<Student> ();
}
public class Student
{
[XmlElement (Namespace = "http://tempuri.org/")]
string firstName;
[XmlElement (Namespace = "http://tempuri.org/")]
string lastName;
}
我的项目中有同一个班级。所以我的想法是序列化我的数组并在远程类的类型中反序列化,所以我可以将它作为参数传递。 但是当我反序列化时,新对象包含简单类型属性的值,但不包含复杂属性的值。
Id = 110;
listStident = null;
这是我的代码;
public Object Deserialize(xmlDocument xmlDocument, Type type)
{
object result = new object();
var serializer = new Xmlserializer(type);
if(type.IsArray)
result = Activator.CreateInstance(type, xmlDocument.FirstChild.NextSibling.ChildNodes.Count)
else
result = Activator.CreateInstance(type);
using(XmlReader xmlReader = new xmlNodeReader(xmlDocument))
{
result = Convert.ChangeType(serializer.Deserialize(xmlReader), type);
}
return result;
}
Type类型是来自dyanamicly加载的程序集的WebMethod参数的类型。
Type type = myRemoteWebMethod.GetParameters()[0].ParameterType;
答案 0 :(得分:0)
我找到了解决方案。 这是代码:
public class Departement {
[XmlElement (Namespace = "http://tempuri.org/")]
string Id;
[XmlArray("Students", Namespace = "http://tempuri.org/")]
[XmlArrayItem("Student")]
List<Student> listStident = new List<Student> ();
}
有效。