gpt4 book ai didi

delphi - Delphi 中的 .NET 'Type' 类替代方案

转载 作者:行者123 更新时间:2023-12-03 15:04:20 24 4
gpt4 key购买 nike

我想用 Delphi(2009 - 所以我有通用字典类)编写类似于 C# 代码的内容:

Dictionary<Type, Object> d = new Dictionary<Type, Object>();
d.Add(typeof(ISomeInterface), new SomeImplementation());
object myObject = d[typeof(ISomeInterface)];

有什么想法吗?

提前致谢,

赫里斯托

最佳答案

对于接口(interface),您需要使用 PTypeInfo 指针,该指针由编译器魔术函数 TypeInfo 返回。 PTypeInfo 在 TypInfo 单元中声明。

type
TInterfaceDictionary = TObjectDictionary<PTypeInfo, TObject>;
var
d: TInterfaceDictionary;
myObject: TSomeImplementation;
begin
d := TInterfaceDictionary.Create([doOwnsValues]);
d.Add(TypeInfo(ISomeInterface), TSomeImplementation.Create());
myObject = d[TypeInfo(ISomeInterface)];
end;

当然,如果这是类而不是接口(interface),您可以只使用 TClass 引用。

关于delphi - Delphi 中的 .NET 'Type' 类替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1032170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com