3
PostSharpのようなライブラリを使用しないと、メソッドにアタッチされたときにロジックを持つことができるカスタム属性を設定する方法がありますか?そのメソッドに入る前に実行されますか?最初に実行されるメソッドに属性を適用する方法はありますか?
PostSharpのようなライブラリを使用しないと、メソッドにアタッチされたときにロジックを持つことができるカスタム属性を設定する方法がありますか?そのメソッドに入る前に実行されますか?最初に実行されるメソッドに属性を適用する方法はありますか?
いいえ;帰属されるコードを挿入するためのものではありません。ポストシャープのようなツールは、煙や鏡を使ってその周りを回っています。もう1つのオプションはデコレータパターン かもしれませんが、おそらくインターフェイスを動的に実装します(どんな手段でも簡単ではありません)。ただし、メソッド呼び出しの先頭にユーティリティメソッド呼び出しを追加すると、がより簡単になります。属性を追加するためのアクセス権がある場合は、メソッド呼び出しを追加するアクセス権があるため、このメソッドの先頭にメソッド呼び出しを追加するのはです。
他の方法:ポストシャープのようなツールがありますきちんとこれはすぐに存在しません。いくつかの場合において
// poor man's aspect oriented programming
public void Foo() {
SomeUtility.DoSomething();
// real code
}
、サブクラスは、サブクラスがランタイム(メタプログラミング)で行われる場合は特に、有用であり得る:
class YouWriteThisAtRuntimeWithTypeBuilder : YourType {
public override void Foo() {
SomeUtility.DoSomething();
base.Foo();
}
}