0

次のクラスがあるとしましょう。

 Public Class Base

      Public Event PropertyChanged()

      Sub New()
           .....
      End Sub
 End Class

 Public Class Other
      Inherits Base

      Public Property X As String
 End Class

言いたい場合は、自動プロパティXのコード定義を(実行時、おそらくでSub New)変更して、イベントをスローできるようPropertyChangedにします。どうすればそれを実行できますか?

編集:Postsharpは私が探求している機能を実行する利用可能なツールのようですが、私の質問は実用的というよりも学術的なものにしたかったのです。では、コンパイル時または実行時に自分でコードインジェクションを実装するにはどうすればよいでしょうか。

4

2 に答える 2

2

AOPを探していると思います。私見が dotnet プラットフォームで成熟していない非常に優れたテクノロジです。Postsharpが最もよく知られている AOP フレームワークであると私は信じています。ただし、本番環境では無料ではありません。インストールと再生 (およびおそらく F/OSS) は無料です。詳細については、この投稿も確認してください。

于 2012-05-15T20:42:18.193 に答える
2

答えは簡単です。できません。型が読み込まれると、そのコードを変更することはできません。

INotifyPropertyChangedプロパティごとに同じコードを書かずに実装したい場合、いくつかの方法があります。

MustOverrideそれらの 1 つは、 ( C# で)プロパティabstractを作成し、実行時にそれを実装する別のクラスを実行時に作成します (たとえば、Castle DynamicProxy を使用)。

もう 1 つは、PostSharp などを使用して、AOP を使用してコンパイル後 (ただし実行前) にコードを書き直すことです。

INotifyPropertyChangedの実装もご覧ください。より良い方法はありますか? 、その他のオプションの概要について。

于 2012-05-15T21:37:15.907 に答える