Delphi如何访问泛型类型成员?

2026-04-10 16:242阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计456个文字,预计阅读时间需要2分钟。

Delphi如何访问泛型类型成员?

假设我有两个类类型:TEmployee(具有属性A,B)和TDept(具有属性C,D)。然后,我定义了一个TList类,如下所示:

pythonclass TList(list): pass

因此,我可以创建TMyCcontainer的实例,并填充TEmployee或TDept:

pythonTMyCcontainer=TListmy_container=TMyCcontainer()my_container.append(TEmployee(A=1, B=2))my_container.append(TDept(C=3, D=4))

假设我有2个类类型TEmployee(具有属性A,B)和TDept(具有属性C,D).然后我像TList一样从TList那里下课:

TMyCcontainer<T>=class(TList<T>)

所以我可以创建TMyCcontainer的实例并填充TEmployee或TDept.在我的TMyCcontainer类中,无论如何都要访问TEmployee的属性A,B或TDept的属性C,D?

当然这种类型是通用的,所以它看起来不是.这是我一直对泛型的问题 – 也许我误用了它们.我最近学会了很多约束,并且认为我找到了我所遗漏的东西……

Delphi如何访问泛型类型成员?

所以我创建了2个接口说IEmployee和IDept,使我的2个原型类es成为interfaceobjects,并在我的Tlist中加入我的禁令即ie

TMyCcontainer<T:IEmployee,IDept>=class(TList<T>)

当然我很快就失望了,因为这就是说你必须在我放入我的通用TList(TMyContainer)的任何类型中实现这些接口的两个,而我只想在任何特定实例中使用ONE,然后在另一个实例中使用其他类型.我必须在我的TDept类中实现IEmployee和IDept,这不是我想要的obv.

有没有什么好方法可以访问通用容器中的Type成员?或者我不应该使用泛型来做这种事情.泰

您放在类上的所有通用约束都必须通过泛型类型来实现.看起来你真正想要的是两种不同的通用类型:TMyContainer< TDept>和TMyContainer< TEmployee>.然后,您将可以单独访问这些类型的所有属性.

本文共计456个文字,预计阅读时间需要2分钟。

Delphi如何访问泛型类型成员?

假设我有两个类类型:TEmployee(具有属性A,B)和TDept(具有属性C,D)。然后,我定义了一个TList类,如下所示:

pythonclass TList(list): pass

因此,我可以创建TMyCcontainer的实例,并填充TEmployee或TDept:

pythonTMyCcontainer=TListmy_container=TMyCcontainer()my_container.append(TEmployee(A=1, B=2))my_container.append(TDept(C=3, D=4))

假设我有2个类类型TEmployee(具有属性A,B)和TDept(具有属性C,D).然后我像TList一样从TList那里下课:

TMyCcontainer<T>=class(TList<T>)

所以我可以创建TMyCcontainer的实例并填充TEmployee或TDept.在我的TMyCcontainer类中,无论如何都要访问TEmployee的属性A,B或TDept的属性C,D?

当然这种类型是通用的,所以它看起来不是.这是我一直对泛型的问题 – 也许我误用了它们.我最近学会了很多约束,并且认为我找到了我所遗漏的东西……

Delphi如何访问泛型类型成员?

所以我创建了2个接口说IEmployee和IDept,使我的2个原型类es成为interfaceobjects,并在我的Tlist中加入我的禁令即ie

TMyCcontainer<T:IEmployee,IDept>=class(TList<T>)

当然我很快就失望了,因为这就是说你必须在我放入我的通用TList(TMyContainer)的任何类型中实现这些接口的两个,而我只想在任何特定实例中使用ONE,然后在另一个实例中使用其他类型.我必须在我的TDept类中实现IEmployee和IDept,这不是我想要的obv.

有没有什么好方法可以访问通用容器中的Type成员?或者我不应该使用泛型来做这种事情.泰

您放在类上的所有通用约束都必须通过泛型类型来实现.看起来你真正想要的是两种不同的通用类型:TMyContainer< TDept>和TMyContainer< TEmployee>.然后,您将可以单独访问这些类型的所有属性.