Delphi TObjectDictionary继承

时间:2018-10-18 18:36:50

标签: dictionary delphi generics inheritance

在Delphi Berlin中是否允许/支持TObjectDictionary类继承?

我有许多形式的班级

TClass1 = class( TObject )
  ID : Cardinal;
end;

TDictionaryClass = class( TObjectDictionary<Cardinal, TClass1>)
end;

TClass2 = class( TClass1 )
end;

TDictionaryClass2 = class( TDictionaryClass )
end;

var
  dc2 : TDictionaryClass2;

在创建TClass2类型的对象并将其添加到TDictionaryClass2时,所有似乎正常工作,并且TDictionaryClass2的实例具有正确的计数。但是,诸如dc2.Keys.ToArray之类的操作会导致访问冲突。 我在TDictionaryClass中有很多基本函数,因此上述构造很方便,但是否合法,如果是的话,是什么导致Keys数组不可访问?

如果不可能的话,还有另一种机制来声明具有大多数通用功能的基类,同时保留后代的类型化字典外观吗?

1 个答案:

答案 0 :(得分:2)

此处显示的代码没有错。这些继承模式是完全正常且广泛使用的。

很明显,您的代码中有缺陷,但是在此处显示的代码中找不到。您需要调试代码。