0

ソース コードが表示されないサード パーティ ソフトウェアを使用する Winforms プログラムを継承しました。このコードでメソッドを呼び出すと、ソフトウェアがチェックするリーダーに接続することが期待されます。残念なことに、接続がときどき落ちるようで、隠れた関数が原因でプログラムは黙って失敗します。すべてのメソッドで try catch を使用せずに、このクラスのメソッドへのすべての呼び出しを処理する方法はありますか?

ソフトウェアは次のようになります。複数のモジュールで同じリーダーにアクセスできるように Reader クラスが使用されています。

public class Reader
{
   private ThirdPartyReader thirdPartyReader;

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

   public Settings QuerySettings()
   {
      return thirdPartyReader.QuerySettings();
   }
}
4

1 に答える 1

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() を実行する必要があるため、それほど違いはありませんが、構文は大幅に短縮されています。

于 2013-04-02T22:16:54.203 に答える