とりわけ.NETでのAOPを扱う修士論文を書いていますが、現在.NET AOPフレームワークがないという事実の重要な要因として、ロード時にクラスを置き換えるためのサポートがないことに言及しています。真の動的ウィービングを実行します-ウィービングクラスがインターフェイス上ですべてのセマンティクスを拡張ContextBoundObject
またはMarshalByRefObject
公開する必要があるという要件を課すことなくではありません。
ただし、次のおかげで、JVMのJavaでこれを行うことができますClassFileTransformer
。
- を拡張し
ClassFileTransformer
ます。 - クラスロードイベントをサブスクライブします。
- クラスのロード時に、クラスを書き直して置き換えます。
これはすべて非常にうまくいっていますが、私のプロジェクトディレクターは、最後の最後に、クラス置換をサポートする/サポートしないフレームワーク(および関連する言語)のリストを提供するように私に依頼しました。私は今、これを探す時間が本当にありません。表面的な調査を行って、論文に誤った情報を入れる可能性があるだけでは、気が進まないでしょう。
だから私はあなたに尋ねます、ああ全能のプログラミングコミュニティ、あなたは助けることができますか?もちろん、私はあなたにこれを自分で研究するように求めているのではありません。簡単に言うと、特定のフレームワークがこれをサポートしている/サポートしていないことが確実にわかっている場合は、それを答えとして残してください。よくわからない場合は、忘れずに指摘してください。
本当にありがとう!
編集:@ewernli
- (2)についてお伺いします。
- C#では、実行時にコードを出力して新しいクラスを動的に作成できますが、これらは新しいクラスであり、既存のクラスを置き換えるものではありません。私がやりたいのは、Javaで.を使用して実行できるように、ロード時にクラスを変換することです
ClassFileTransformer
。 - メソッドのシグネチャの変更について:はい、その通りです。私の場合、クラスのインターフェースを変更するのではなく、そのメソッドのコンテンツを変更する必要があることを述べておかなければなりません。
あなたの答えは本当に役に立ちました。ありがとうございました :)