我想针对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>;