2

確かに、これはロングショットです。私は、アクションの開始時と終了時に監査レコードを開いたり閉じたりする監査部分に取り組んでいます。[Audit(AuditType.Something)]メソッドを監査するには、メソッドに属性を追加し、必要に応じてメッセージなどの他の情報を追加するだけでよいように、うまく調整しました。次に、SNAP を使用して、Audit オブジェクトの作成とその開閉を処理するインターセプターを作成します。

同僚から、監査に非定数メッセージを含める必要があるというケースがありました。これは、属性宣言に入ることができないことを意味します。クラスに Audit プロパティを固定し、メソッドを続行させる前にインジェクターに設定させることについて考えましたが、監査されていないオブジェクトからプロパティにアクセスでき、さらに多くのオブジェクトで複製されるため、それは面倒です。場所。属性を使用せずに監査を作成する方法もありますが、属性で適切にラップされた状態を維持できる方がはるかに優れています。

[Audit]理想的なケースは、属性を持つメソッドがインジェクターから監査オブジェクトを貼り付けることができる変数にアクセスできるように、何らかの方法で設定できる場合です。これは本当に可能ですか、それともただの希望的観測ですか?

4

1 に答える 1

1

Audit 属性に type のパラメーターを指定さTypeせ、提供Typeされた が監査メッセージを生成するインターフェイスを実装する場合はどうなるでしょうか。例えば:

public interface IAuditMessageProvider {
    public String MakeMeAnAuditMessage(/* some args perhaps */);
}

public class PiAuditMessageProvider : IAuditMessageProvider {
    public String MakeMeAnAuditMessage() { return "3.14"; }
}

[Audit(typeof(PiAuditMessageProvider))]
public void myMethod { ... }

次に、 を使用して提供された型をインスタンス化しActivator.CreateInstance、 にキャストしてIAuditMessageProvider、関連するメソッドを呼び出すことができます。

于 2012-04-18T20:53:17.103 に答える