回到目錄dynamic這個動態類型早在.net3.5時就已經出現了,當時是伴隨的Linq一起讓我們認識的,但在使用時總覺得有點彆扭,因為它是internal的,所以不能跨程式集使用,這對於分層開發的我們來說顯然是不能接受的,所以把dynamic了冷落了很久,應該說是5年吧,哈哈,這幾天在睡覺時,突然...
dynamic這個動態類型早在.net3.5時就已經出現了,當時是伴隨的Linq一起讓我們認識的,但在使用時總覺得有點彆扭,因為它是internal的,所以不能跨程式集使用,這對於分層開發的我們來說顯然是不能接受的,所以把dynamic了冷落了很久,應該說是5年吧,哈哈,這幾天在睡覺時,突然有個想法,最近在開發SOA時,為了使客戶端與服務端有類對應關係,進行序列化,所以總要定義一些DTO,當然你可以把服務端和客戶端都引用這個DTO,或者在客戶端手動寫一個也行,但感覺這兩種方式在程式解耦上都不完美,這時我就想起了dynamic,我在序列化時,可不可以用它做中間類型呢?
經過今天的測試,答案是“可以”,這是讓我很興奮的,呵呵
測試代碼:
var url = "http://localhost:24334/api/UserApi"; var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; using (var http = new HttpClient(handler)) { //await非同步等待回應 var response = http.GetAsync(url); //將服務端返回的實體序列化為dynamic動態類 var obj = JsonConvert.DeserializeObject<dynamic>(response.Result.Content.ReadAsStringAsync().Result); //遍歷這個動態集合 foreach (var item in obj) { return Content("userName:" + item.UserName); } }
結果代碼:
怎麼樣,很不錯吧,有時候,一個新的技術可能你現在用不上,但知道了總會有好處,沒准將來的某一天就會用到!人在學習知識時,沒有沒用的知識,只是你目前可能用不到它!