享受無止境 改進版WCF Client

2021-09-24 17:38:08 字數 1147 閱讀 5136

在之前的文章「讓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的實現**:

public

class 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...