2012-04-18 19 views
2

確かに、これはロングショットです。私は、あなたがあなたの行動の開始時と終了時に監査記録を開いたり閉じたりする監査記録に取り組んでいます。メソッドを監査するために、[Audit(AuditType.Something)]属性を追加するだけでなく、必要に応じてメッセージなどのその他の情報を追加する必要があります。その後、SNAPを使用して、Auditオブジェクトの作成とそれを開いたり閉じたりするインターセプタを持っています。属性を使用してメソッドにパラメータを追加する

場合は、我々はそれが属性宣言に行くことができないという意味、監査に非定数のメッセージを持っている必要があります同僚から思い付きました。私は、クラス内でAuditプロパティを固定し、メソッドを続行する前にインジェクタを設定しておくことについて考えましたが、プロパティが監査対象外のオブジェクトからアクセス可能であり、さらにたくさんの場所。属性なしで監査を作成する方法もありますが、属性にうまく包まれた状態に保つことができればもっと良いでしょう。

[Audit]属性を持つメソッドが、インジェクタから監査オブジェクトをスティックできる変数にアクセスできるように、何らかの形で設定できるのが理想的です。これはすべて可能なのでしょうか、それとも希望的な考えですか?

答えて

1

Audit属性に、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にキャスト、および関連するメソッドを呼び出します。

関連する問題