2013-04-22 9 views
6

Chciałbym zdefiniować typ rekordu (typ alias) dla ogólnego rekordu. Chciałbym to zrobić, aby użytkownicy jednostki b mieli dostęp do TMyGenericRecord bez użycia jednostki a. Mam jednostki tak:Czy jest możliwe utworzenie aliasu typu do ogólnego rekordu w 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. 

Odpowiedz

4

Prosta odpowiedź na to pytanie jest to, że język nie obsługuje rodzajowe aliasy typu.

only places where you can use generic parameters są:

  1. Generic class, interface, record and array types lub
  2. Typowa procedural types lub
  3. Generic methods.
+0

ok, dzięki za odpowiedź. Szkoda. Prawdopodobnie w przypadku klas generycznych istnieje rozwiązanie (z pewnymi problemami, ale istnieje rozwiązanie) [Czy możliwe jest utworzenie aliasu typu do klasy ogólnej w Delphi] (http://www.stackoverflow.com/questions/10060009/is- to-możliwe-stworzyć-typ-alias-do-ogólnej-klasy-w-delphi? rq = 1) –

+1

@ DanielAndrascik Nie ma nic, co nazwałbym rozwiązaniem. Wszystko, co widzę, to kod, który pogarsza sprawę! ;-) –

Powiązane problemy