私は Freepascal でイベント マネージャーをやっています。
各イベントはオブジェクト タイプ TEvent (=オブジェクト) であり、各種類のイベントはこのクラスから派生する必要があります。
イベントは、動的に割り当てられる整数識別子によって区別されます。
問題は、インスタンスのイベント ID を取得したいのですが、うまくできないことです。
- クラス(オブジェクト)のすべてのインスタンスには一意のID =>があるため、静的フィールドにする必要があります。
- すべてのクラスには異なる id => があるため、仮想でなければなりません。
- イベントIDは実行時に割り当てられ、変更される可能性がある=>ため、単純な方法にはなりません
要するに、私はこれをすべてまとめることができません。
私はエレガントなソリューションを探しています。ハードコードされたテーブルを書きたくないので、すべてのコンストラクターでそれを実現します...など、ポリモーフィズムを利用したものを好む
誰かが別の技術的または設計的ソリューションで私を助けてくれますか? ?
オブジェクト構成の代わりにクラスを使用したくないことに注意してください。(プロパティはオブジェクトでは機能しませんか? :(