2013-04-02 74 views
0

我已經繼承了Winforms程序,該程序使用了一些第三方軟件,但我無法看到源代碼。在調用這段代碼中的方法時,需要連接到軟件檢查的閱讀器。不幸的是,連接似乎不時地下降,隱藏的功能導致程序無聲無息地失敗。有沒有辦法處理每個對這個類的方法的調用,而不用每次調用try catch?錯誤處理整個類

軟件看起來像這樣,與Reader類被使用,使得我們可以跨越多個模塊訪問相同的讀者:

public class Reader 
{ 
    private ThirdPartyReader thirdPartyReader; 

    public ObjectReport QueryObjects() 
    { 
     return thirdPartyReader.QueryObjects(); 
    } 

    public Settings QuerySettings() 
    { 
     return thirdPartyReader.QuerySettings(); 
    } 
} 
+2

Winforms? WPF? – phadaphunk

+0

當你說:「當在這段代碼中調用方法時」我假設你是從第三方獲取DLL的,如果可以的話,你可以使用IL反彙編器來查看裏面發生了什麼 - 當然這並不能解決你的整體問題。 –

+0

[你有什麼試過?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

1
public static class Extensions 
    { 
     public static TResult Try<TObject, TResult>(this TObject source, Func<TObject, TResult> method, string message = null) 
     { 
      try 
      { 
       return method(source); 
      } 
      catch (Exception e) 
      { 
       //Some Logging or whatever, optionally using the message parameter; 
       return default(TResult); 
      } 
     } 
    } 

用法:

 var reader = new ThirdPartyReader(); 
     var objects = reader.Try(x => x.QueryObjects()); 
     var settings = reader.Try(x => x.QuerySettings(), "Error Reading Settings"); 

這是真的沒有那麼不同,因爲你仍然必須做reader.Try(),而不是隻調用方法,但它是一個非常簡短的語法。

+0

謝謝你的答案。這與我的包裝非常相似。如果事實證明這是最好的解決方案,我會將其標記爲答案。 – SeanVDH