8

ジェネリックを使用するプロパティを作成しようとしています:

type TMyClass = class
  protected
    function GetCountBy<T: Class>: Integer;
  public
    property CountBy<T: Class>: Integer read GetCountBy<T>;
  end;

しかし、コンパイルはプロパティ宣言で失敗し、「Property CountBy does not exist in base class」というメッセージが表示され、プロパティ名の開始 < に赤い波線が表示されます。

これを達成する方法はありますか?

編集:これは私の他のユースケースです。これはより複雑ですが、より現実的なものです:

property ItemsBy<T: Class>[Index: Integer]: T read GetItemsBy<T> write SetItemsBy<T>;

この関数は、リストの内容をフィルタリングして、指定されたクラスの Index 番目の項目を返します。

4

2 に答える 2

10

Delphiでは一般的なプロパティはサポートされていません。ジェネリッククラス、またはジェネリックメソッドのみ。

その制限を明示的に述べているドキュメントには何も見つかりません。一方、ドキュメントではジェネリッククラスとジェネリックメソッドについてのみ説明しています。また、ジェネリックスをサポートする新しい言語文法では、プロパティについても言及されていません。

于 2012-06-05T22:15:38.690 に答える
1

私はジェネリックについては詳しくありませんが、宣言はこのようにするべきではありません

  type TMyClass<T: class> = class
  protected
    function GetCountBy<T>: Integer;
  public
    property CountBy<T>: Integer read GetCountBy<T>;
  end;
于 2012-06-05T20:05:37.750 に答える