測試了一下,如何使用 Web Service 傳定自定的物件
1) Web Service 端
Step 1. 先自定一個物件,名叫 Hero,設定為可序列化類別
一定要加入 public Hero() { } 這行,不然會出現「無法序列化 XXX.Hero,因為它沒有參數建構函式。」的錯誤
[Serializable]
public class Hero
{
public int id { get; set; }
public string name { get; set; }
public Hero() { }
public Hero(int id, string name)
{
this.id = id;
this.name = name;
}
}
Step 2. 撰寫 Web Service 方法
[WebMethod]
public List<Hero> GetHeroes()
{
List<Hero> lstHero = new List<Hero>();
lstHero .Add(new Hero(1, "Kyle"));
lstHero .Add(new Hero(2, "Paul"));
return lstHero ;
}
2) Web Client 端
上面的 Web 參考名為 localhost,類別為 WebService1
用下面這兩段就可以將 Hero 物件接回去了
localhost.WebService1 CallWebService = new localhost.WebService1();
localhost.Hero[] heroes = CallWebService.GetHeroes();
後續也可以將 localhost.Hero[] 轉回為自定的物件 Hero
List<Hero> lstHero = new List<Hero>();
for (int i = 0; i < heroes.Length; i++)
{
lstHero.Add(new Hero(heroes[i].id, heroes[i].name));
}