Ruby では、すべてのクラスが永久にオープンです。新しい動作は、ほぼいつでもどのクラスにも追加できます。VB.NET でこれを行う方法はありますか?
たとえば、既存のアプリ (大規模なアプリ) 内のすべての DataRows に新しい動作を持たせたい場合はどうすればよいでしょうか。DataRow から継承するカスタム行クラスを作成できることはわかっていますが、継承は私が求めているものではありません。すべての場所で行がインスタンス化されていることを確認するために、多くの再作業が必要でした。カスタム行クラスからインスタンス化しています。
これがどのように行われるかについて、2 つの大まかなアイデアがありました。
アスペクト (AOP) がここで機能する可能性があることに気づきました。 既存のメソッドの上に動作を重ねる方法はありますか?
特定のインターフェイスを既存のクラスに適用することは可能でしょうか。
ここでの主な目標は、既存のコードを大幅に改造する必要がないようにすることです。システムは、これらの階層化された動作/側面に実質的に気付かないようにする必要があります。コードベースへの最小限の変更が必要です。
現在、デコレータ クラスを使用してレイヤード アスペクトを実装しています。問題は、システムがネイティブ行と行デコレータ オブジェクトの違いを認識していることです。システムがネイティブの行であると見なすものを渡すことができるようにしたいと考えています。繰り返しますが、システムは行に適用される装飾を気にする必要はありません。特別なデコレータではなく、行があると考える必要があります。
具体的には、行のデフォルト セット Item(colName) プロパティを装飾して、入力値を変更できるようにしたいと考えています。