2013-04-22 13 views
6

Vorrei definire un tipo di record (tipo alias) per un record generico. Mi piacerebbe farlo in modo che gli utenti dell'unità b possano accedere a TMyGenericRecord senza utilizzare l'unità a. Ho unità in questo modo:È possibile creare un alias di tipo per un record generico in Delphi

unit a; 
interface 
type 
    TMyNormalRecord = record 
    Item: Integer; 
    end; 
    TMyGenericRecord<T> = record 
    Item: T; 
    end; 
implementation 
end. 

unit b; 
interface 
type 
    TMyNormalRecord = a.TMyNormalRecord; // works 
    TMyGenericRecord<T> = a.TMyGenericRecord<T>; // E2508 type parameters not allowed on this type 
implementation 
end. 

risposta

4

La semplice risposta alla domanda è che il linguaggio non supporta gli alias di tipo generico.

Il only places where you can use generic parameters sono:

  1. Generico class, interface, record and array types, o
  2. Generico procedural types, o
  3. Generico methods.
+0

ok, grazie per la risposta. È un peccato. Probabilmente per le classi generiche esiste una soluzione (con alcuni probemi, ma esiste una soluzione) [È possibile creare un alias di tipo per una classe generica in Delphi] (http://www.stackoverflow.com/questions/10060009/is- it-possible-to-create-a-type-alias-to-a-generic-class-in-delphi? rq = 1) –

+1

@DanielAndrascik Non c'è niente lì che definirei una soluzione. Tutto quello che posso vedere è un codice che peggiora le cose! ;-) –

Problemi correlati