Hallo!
Dieser
Lösung hier folgend habe ich eine identische Implementierung vorgenommen:
Delphi-Quellcode:
type
TmyArray = class(System.Generics.Collections.TArray)
public
class function Contains<T>(const Values: array of T; const Item: T; const Comparer: IEqualityComparer<T>; out ItemIndex: Integer): Boolean; overload; static;
class function Contains<T>(const Values: array of T; const Item: T; out ItemIndex: Integer): Boolean; overload; static;
class function Contains<T>(const Values: array of T; const Item: T): Boolean; overload; static;
class function IndexOf<T>(const Values: array of T; const Item: T; const Comparer: IEqualityComparer<T>): Integer; overload; static;
class function IndexOf<T>(const Values: array of T; const Item: T): Integer; overload; static;
end;
Doch wenn ich diesen Typ dann analog zu TArray<string> als TmyArray<string> verwenden will, meckert der Compiler:
Delphi-Quellcode:
procedure Produce;
var
myArray: TmyArray<string>; // <-- E2003 Undeklarierter Bezeichner: 'TmyArray<>'
begin
{...}
end;
Lasse ich das
<string>
in der Deklaration weg, kompiliert das zwar, kracht dann aber anschließend (logischerweise) in der Verwendung:
Delphi-Quellcode:
procedure Produce;
var
myArray: TmyArray;
begin
myArray := ['Foo', 'Bar', 'Baz']; // <-- E2001 Ordinaltyp erforderlich
end;
Und nu steh ich auf dem Schlauch.
Grüße
Cody