私が開始する前に、私は次のようにAOPの用語の私の現在の理解があることを明確にしたいのですが...PostSharpポイントカット
- 側面は、OOPのクラスのAOPと同等です。
- アドバイスは、OOPのメソッドのAOPに相当します。
- Pointcutは、OOPで 'using'コードと同等のAOPです。 OOPでは、我々は物事を呼び出す。 AOPでは、私たちは物事を織ります。 の決定を編むここで、はPointcutsによって定義されています。実際の問題上へ、
...
私はプロパティを除く、すべての方法で(織り)を使用したいPostSharpで伐採側面を持っています。もともと私は私の側面に、次を使用していました:
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
はしかし、私は、アスペクトはまだ私は性質上で実行されるから、私のコードを排除するために、実行時に二次チェックを実行しなければならなかった意味、性質に織り込まれていましたが見つかりました:
if (!methodName.StartsWith("set_") && !methodName.StartsWith("get_")) {
これは理想的ではありません。私は私のポイントカットでこの動作を定義できるので、実行時のチェックを行う必要はありません。
私はMethodPointcut
属性を調べています。この属性は、作成時にアドバイスを選択する候補者を支援するためのコールバックを提供しているようです。 例をご覧ください。
私はまだ「私のアドバイスにPointcutsをハードコーディングする必要がありますか?」と考えています。アスペクトとアドバイスは定義/実装です。 Pointcutsは使い方です。 2つは別々にする必要があります。
ありがとうございます。 MulticastTargets.Propertyはそれから何を識別しますか? –
メソッド=コンストラクタではなくメソッドですが、プロパティはプロパティですが、メソッドではありません。 http://doc.sharpcrafters.com/postsharp/2.0/##PostSharp.chm/html/T_PostSharp_Extensibility_MulticastTargets.htm –