2

こんにちは、みんな

これらのケースで、ポリシー インジェクション アプリケーション ブロックを使用してメソッドのエントリと終了をログに記録する方法をお尋ねしたいと思います。

ケース1 : Web フォーム コントロールのイベント ハンドラーをログに記録する場合、クラスSystem.Web.UI.Page から _Default を継承する必要があるとしましょう。そのため、 MarshalByRefObjectクラスからクラスを継承できないため、ログは機能しません。 .

ケース 2 :静的クラスがあり、メソッドをログに記録する必要がある場合、ログを取得するためにMarshalByRefObjectカルスからこのクラスを継承するためにできること。

4

3 に答える 3

1

ロギングを適用できるようにするためのいくつかの愚かな要件があるように思えます...これはオフトピックかもしれませんが、MarshalByRefObjectから継承する必要なしにオブジェクトにロギングを適用するためにSpring.AOPフレームワークを検討することをお勧めします。(多重継承切断言語では、それは厄介で抜本的な要件だと思います)。

于 2008-11-23T14:14:13.217 に答える
1

ケース 1 に関しては、ポリシー インジェクション ブロックは、インターフェースを持っているオブジェクトに作用することができます。インターフェイスをまだ念頭に置いて作成していない場合は、[リファクタリング] -> [インターフェイスの抽出] アクションを使用して、Visual Studio で簡単に実行できます。

于 2009-02-24T02:54:06.407 に答える
0

ケース2に関しては、「静的」クラスは実際には静的クラスではありません。MarshalByRefObjectから継承することも、指定したインターフェースを実装することもできます。次に、プライベートコンストラクターとポリシーインジェクトするシングルトンインスタンスを持つことができます。すべての静的メソッドは、クラスのシングルトンインスタンスで対応する(ポリシーが挿入された)インスタンスメソッドを呼び出すだけです。

于 2009-11-25T17:32:33.827 に答える