1

使い捨てパターンで IDisposalbe インターフェイスを実装する使い捨てクラスがあります。制約を維持するには、オブジェクトが破棄されたときに、パブリック メソッドへの後続の呼び出しで ObjectDisposedException がスローされるようにする必要があります。明らかな解決策は、bool 値 isDisposed をチェックして例外をスローすることです。しかし、リフレクション ベースのソリューション (存在する場合、または他のアプローチがある場合) を使用して、この制約をすべてのパブリック メソッドに自動的に適用するにはどうすればよいでしょうか。私がやりたくないのは、私が持っているすべてのメソッドでこのチェックを行うことです (つまり、すべての呼び出しの前に IsObjectDisposed() メソッドを呼び出したくない)

前に説明した実用的なアプリケーションとは別に、MyClass などのクラスのメソッドを呼び出すたびに、Foo() などのメソッドを自動的に呼び出す方法を知る必要があります。

4

2 に答える 2

2

Imo、ここに2つの解決策があります:

  • またはそれらを手動で呼び出すので、実際にコードを作成して、すべてpublicのメソッドに対してチェックが実行されるようにします。

  • または、アスペクト指向プログラミングを使用して、何らかの属性でマークされたすべてのメソッドの先頭に関数呼び出しを挿入できます。

于 2012-10-04T09:26:30.640 に答える
0

コードを使用する前に、単純に null チェックを実行することを考えたことはありますか?

すなわち。if(null!=object) { 操作を行う }

それとも、virtual キーワードを使用する代わりに、ある種のオブジェクト ラッパーを探していますか? つまり、ユニティやスプリングなどを使用してアスペクトを使用します。これらを使用すると、コードをアプリケーションに依存性注入することができ、セキュリティ、ロギング、印刷、および境界チェックなどのコード ベースを通じて「横断的な考慮事項」を適用できます。

于 2012-10-04T09:26:23.103 に答える