2011-04-29 154 views
0

我的客戶端應用程序中使用了我的項目中有很多web方法。 ]WCF wrap代理客戶端

我不想寫代碼是這樣的:

using(ServiceClient sc = new ServiceClient()) 
    { 
     //Invoke service methods   
     sc.Method1(); 
    } 

相反,我想寫:ServiceClient.Method1();在這種情況下,其下文稱到代理初始化,調用方法,處置,除了所有常見的操作處理將在ServiceClient內部進行。當然,我可以使用類似的代碼來包裝我的任何web方法,或者使用反射來按名稱進行方法檢索,但是也許有其他方法存在?

回答

0

你可以讓你的「方法一」 ServiceClient的靜態成員,然後調用ServiceClient.Method1();

1

我假設你使用添加服務引用生成ServiceClient ...

首先,it's not safe包ServiceClient(它來自ClientBase)在使用塊中。深入研究的Here is a stackoverflow thread。其次,你可以封裝生成的ServiceClient,並創建靜態方法來完成你正在描述的內容,但這是很多手動編碼的好處。相反,我會鼓勵您將代理創建,調用,錯誤處理,關閉和處置封裝在泛型類中。 This is a good example