2012-02-01 77 views
1

我有一些WCF調用,我希望他們周圍有一個trycatch。我不想複製相同的trycatch,我想委託函數調用。有參數的代表方法調用

這是我的示例原始功能(減少);

public DTO_Echo_Response SendEcho(DTO_Echo_Request request) 
{ 
    try 
    { 
     return Proxy.SendEcho(request); 
    } 
    catch (System.ServiceModel.CommunicationException) 
    { 
     throw new Communication_Error("Communication Error"); 
    } 
} 

我想類似以下內容:

public DTO_Echo_Response SendEcho(DTO_Echo_Request request) 
{ 
    // invoke Process(Proxy.SendEcho(request)); 
} 

public _DTO_BaseResponse Process(Func myFunction) 
{ 
    try 
    { 
     return myFunction(); 
    } 
    catch (System.ServiceModel.CommunicationException) 
    { 
     throw new Communication_Error("Communication Error"); 
    } 
} 

我曾參觀過許多文章,並試圖這是沒譜的方式很多不同的東西。

謝謝

回答

3

你很親近。試試這個:

public DTO_Echo_Response SendEcho(DTO_Echo_Request request) 
{ 
    return Process(() => Proxy.SendEcho(request)); 
} 

public TResult Process<TResult>(Func<TResult> myFunction) 
{ 
    try 
    { 
     return myFunction(); 
    } 
    catch (System.ServiceModel.CommunicationException) 
    { 
     throw new Communication_Error("Communication Error"); 
    } 
} 
+0

非常感謝你! – 2012-02-01 05:07:23

+0

不客氣!抓住缺失的「回報」。 – 2012-02-01 05:49:42