1

複数のクラスで動作するコンポーネントを開発しています。マネージド クラスのリストを追加できるようにするために、TCollectionItem から継承された各アイテムが公開された「TargetClassName」プロパティを定義する TCollection の継承クラスを作成しました。「TargetClassName」プロパティのセッター関数は、対応する TClass を見つけるために次の関数を呼び出します。

function FindAnyClass(const Name: string): TClass;
var
  ctx: TRttiContext;
  typ: TRttiType;
  list: TArray<TRttiType>;
begin
  Result := nil;
  ctx := TRttiContext.Create;
  list := ctx.GetTypes;
  for typ in list do
    begin
      if typ.IsInstance and (EndsText(Name, typ.Name)) then
        begin
          Result := typ.AsInstance.MetaClassType;
          break;
        end;
    end;
  ctx.Free;
end;

( Delphi で Get class という名前の関数を書いてくれた Dalija Prasnikar に感謝します)。

さて、設計時にクラスを TCollectionItem に追加できるようにするためのより良い方法があるかどうか疑問に思っています..どう思いますか? 興味深い解決策を読むことを願っています! ありがとうございます。

4

1 に答える 1

0

TCollection で作成する必要があります 照合クラスを導入するには、2 つの方法で可能です。

于 2015-04-12T11:47:22.903 に答える