天天看點

WebApi系列~dynamic讓你的省了很多臨時類

回到目錄

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);
                }
            }      

結果代碼:

怎麼樣,很不錯吧,有時候,一個新的技術可能你現在用不上,但知道了總會有好處,沒準将來的某一天就會用到!人在學習知識時,沒有沒用的知識,隻是你目前可能用不到它!

作者:倉儲大叔,張占嶺,

榮譽:微軟MVP

QQ:853066980

支付寶掃一掃,為大叔打賞!

WebApi系列~dynamic讓你的省了很多臨時類