私はデータのリストを表示できるはずのコントロールを作成しています。私がしたかったのは、CurrentプロパティとMoveNextメソッドを含むパブリックGetEnumerator関数をチェックするという点でfor-inコンストラクトを模倣することでした。任意の型でGetEnumeratorを呼び出す方法は?
私は次のことを決定しました:
- 私は単に私のオブジェクトにMethodAddressを呼び出すことにより、方法のexistanceを確認することができます。アドレスを取得した場合、メソッドが存在します。
- RTTIを使用してメソッドの戻り値の型をチェックできます。
- RTTIを使用して、プロパティをチェックして読み込むことができます。イン間
しかし、私は情報の小さなビットをしないのです:
- はどのようにして、そのアドレス指定された、メソッドを呼び出していますか?私はちょうど定義を書いていますか(私は輸入品のようです)、アドレスをキャストして呼び出しますか?
- メソッドの戻り値の型を調べるには、そのPTypeInfoでGetTypeDataを呼び出す必要があります。 PTypeInfoはTypeでTypeInfoを呼び出して取得します。だから、そのメソッドのPTypeInfoを取得するには、そのアドレスだけを与えますか?
私はあなたが達成しようとしていることを本当に理解していません。コントロールはデータを表示しますが、列挙子はどこで再生されますか? – jpfollenius
そして、コントロールに渡されるすべてのデータがIEnumerableを実装していることを確認してみませんか?列挙子に追加の機能を追加しますか?それは何ですか? – jpfollenius
計画は、リストの要素を一覧表示することです。また、私は主にこれを多くの既存のコードと組み合わせて使用しますが、そのほとんどはGetEnumeratorを実装してfor-inサポートを有効にしますが、IEnumerableを実装していないもの(Delphiのfor-in構文)。 –