2017年3月23日 星期四

Web Service 傳遞自定物件

測試了一下,如何使用 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));
            }