1

I know there are numerous aspect-oriented frameworks for VB.NET. It's a little heavy to pull an entire framework into play in order to add an aspect to a couple methods. Does VB.NET offer a simple means (via some sort of metaprogramming/reflection) in which to layer an aspect over an existing method in a class/object?

Basically, the goal is intercept a method's incoming message to invoke it and add side effects or to manipulate the request, just as one would normally do in standard AOP.

Are there any plans to integrate aspects directly into the language?

4

2 に答える 2

1

この場合、ポリモーフィズムはオプションではありませんか?ある種のAOPフレームワークの外では、VBで既存のクラスの機能を変更する方法がないことがわかると思います。基本メンバーを継承してオーバーライドすることも、拡張メソッドを使用して既存のクラスに機能を追加することもできますが、既存のクラスの既存の機能を変更する方法はありません。

別の既存のライブラリを模倣する新しいライブラリを作成し、既存のコードをだまして新しいライブラリが元のライブラリであると思わせることは可能ですが、どうしても必要な場合を除いて、これは悪い考えです。AOPの用語で考えるのではなく、標準のOOPの方法で設計を再考する必要がある可能性があります。

于 2012-07-09T13:41:07.170 に答える
0

デコレータ(またはプロキシ)パターンはどうですか?これはほんの数個のメソッドなので、必要なデコレータクラスは1つまたは2つだけです。後でそれが1つか2つの方法だけではないことに気付いた場合は、AOPツールを導入することを検討できます。

これは、VB.NETに非常に簡単に変換できるC#の例です。

于 2012-07-14T03:42:19.873 に答える