如何将泛型存储在非泛型对象持有的泛型TList中?
type
TXmlBuilder = class
type
TXmlAttribute<T>= class
Name: String;
Value: T;
end;
TXmlNode = class
Name: String;
Attributes: TList<TXmlAttribute<T>>;
Nodes: TList<TXmlNode>;
end;
...
end;
编译器说T不在
Attributes: TList<TXmlAttribute<T>>;
-
皮埃尔·雅格
最佳答案
TXmlNode不知道什么是T。应该是什么?
也许你的意思是:
TXmlNode<T> = class
Name: String;
Attributes: TList<TXmlAttribute<T>>;
Nodes: TList<TXmlNode<T>>;
end;
...或者,或者您需要指定类型。
但是,您似乎在这里缺少了一些东西。泛型允许您为每种类型创建一个单独的类,而不是为所有类型创建一个类。在上面的代码中,TList包含一个相同类型的数组,您可能希望它们不同。考虑一下这个:
TXmlBuilder = class
type
TXmlAttribute= class
Name: String;
Value: Variant;
end;
TXmlNode = class
Name: String;
Attributes: TList<TXmlAttribute>;
Nodes: TList<TXmlNode>;
end;
...
end;