在之前的文章「讓wcf客戶端的「呼叫」成為一種『享受』」中,分別用func與action實現了wcf客戶端呼叫介面。
func實現的呼叫方式:
wcfclient.useservice((iuserservice userservice) => (userservice.getuser(userid)));
缺點:1. 需要用匿名方法傳遞引數,寫起來比較麻煩。
2. 不支援無返回值的servicecontract。
action實現的呼叫方式:
listdocs = null;wcfclient.useservice(
s =>
);
缺點:雖然支援了無返回值的servicecontract,但需要在lambda表示式中獲取返回值。這樣還造成了無法使用型別判斷,也就是不能使用var docs。
用action「享受」了很多次的過程中,總是有那麼一點點「不爽」縈繞在心頭,揮之不去。。。
2011即將過去,2012即將到來,在這辭舊換新之際,也把那一點點「不爽」辭去吧。
今天下午,借助.net世界中乙個強大的**完成了這個小小的心願,它就是表示式樹 —— expression> operation
先一睹呼叫改進版wcf client的風采:
var client = new wcfclient();var docs = client.useservice(s => s.getzzkdocuments("
0", 10));
然後看看wcfclient的實現**:
publicclass wcfclientwhere tservice : class
}catch
return result;
}}
對於expression> operation,我的理解是:請你告訴我,如果給你一段**(tservice),你如何給我乙個改變了的世界(treturn)。我不關心給你的是什麼**,也不關心改變後的世界是什麼樣子,我只關心你如何改變世界。
享受無止境,但真正讓人成長與快樂的不是得到那個享受,而是這個追求享受的過程。現實世界如此,**世界也是如此。
享受無止境 改進版WCF Client
在之前的文章 讓wcf客戶端的 呼叫 成為一種 享受 中,分別用func與action實現了wcf客戶端呼叫介面。func實現的呼叫方式 wcfclient.useservice iuserservice userservice userservice.getuser userid 缺點 1.需要用...
Beetle遊戲改進版
在執行這個遊戲時,最後螢幕上顯示的是如下圖所示。甲蟲情況變成了beetle 60aeb0。原來在system.out.println beetle 中實際上用到了tostring方法,為了清楚表達甲蟲的情況,要重寫這一方法。在beetle類中加入下面重寫的tosting 方法 public stri...
六 改進版(Hit UFO)
2 實現 專案位址 參考部落格 按 adapter模式 設計圖修改飛碟遊戲 使它同時支援物理運動與運動學 變換 運動 飛碟起始位置隨機生成 vector3 startpos new vector3 unityengine.random.range 70,70 unityengine.random.r...