我想针对Delphi中的实例创建类型的字典。

如果我声明以下内容:

m_things: TDictionary<TClass, TThing>;


这使我可以根据TThing实例获取任何类型的字典。如何将类型限制为TThing或派生类的实例?我想做:

m_things: TDictionary<class of TThing, TThing>;


但出现以下错误:

[dcc32 Error] collector.pas(13): E2058 Class, interface and object types only allowed in type section


我也尝试过:

m_abstract: TDictionary<T: TThing, TThing>;


但是然后我得到这个错误:

[dcc32 Error] collector.pas(13): E2003 Undeclared identifier: 'T'


我不清楚这是否可行以及语法可能是什么。

最佳答案

您需要使用class of语法声明一种类型来表示metaclass。像这样:

type
  TThingClass = class of TThing;
....
var
  m_things: TDictionary<TThingClass, TThing>;

08-26 10:00