簡體   English   中英

訪問泛型類型的成員

[英]Accessing members of a generic type

假設我有2個類類型TEmployee(具有屬性A,B)和TDept(具有屬性C,D)。 然后我像TList一樣從TList那里下課:

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

所以我可以創建TMyCcontainer的實例並填充TEmployee或TDept。 在我的TMyCcontainer類中,無論如何都要訪問TEmployee的屬性A,B或TDept的屬性C,D?

當然這種類型是通用的,所以它看起來不是。 這是我一直對泛型的問題 - 也許我誤用了它們。 我最近學會了很多約束,並且認為我找到了我所遺漏的東西......

所以我創建了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> 然后,您將可以單獨訪問這些類型的所有屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM