1

Ninject.Extensions.Interceptionがすべてのメソッドとプロパティを virtual にする必要があるのはなぜですか?

overrides機能を提供するのはメンバーだと思いますAOPが、メソッドの前後にメソッドを呼び出してインターセプトすることで実装できませんでしたか? 置換の場合でも、元のメソッドをラップして、何か他のことをするか、何もしないことができます。

他のコンテナではメンバーが である必要がありますvirtualか? するものとしないもの。ない場合は?それらはどのように機能しますか?

4

1 に答える 1

4

IoC コンテナで使用される動的プロキシ ベースのインターセプトには、仮想メソッドが必要であるか、クラスの代わりにインターフェイスを挿入して、プロキシがメソッドを無効にできるようにする必要があります。

非仮想メソッドで AOP を実行する場合は、PostSharp のようなコード織りの AOP アプローチを使用する必要があります。

于 2013-10-22T14:01:33.743 に答える