我想用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 - NET在phi中的 'Type'类替代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1032170/

10-13 00:55