![]() |
IEnumerator<TObject> != IEnumerator<TObject> ?
Irgendwie mag mich der Delphi 2009 Compiler heute nicht oder ich stehe auf dem Schlauch.
Ich habe folgende Deklaration um einer TObjectList das IEnumerator<T> Interface "unterzujubeln".
Delphi-Quellcode:
Bei der Zuweisung an ein Interface spuckt mir der Compiler aus, dass die Methode "GetEnumerator" sich vom Interface unterscheidet.
type
TEnumObjectList<T> = class(TInterfacedObject, IEnumerable<T>) private FList: TObjectList; public constructor Create(AList: TObjectList); function GetEnumerator: IEnumerator<T>; end;
Delphi-Quellcode:
var
Enum: IEnumerable<TObject>; begin Enum := TEnumObjectList<TObject>.Create(nil); end; Zitat:
|
Re: IEnumerator<TObject> != IEnumerator<TObject>
Jetzt habe ich doch noch eine Lösung gefunden.
Delphi-Quellcode:
Dabei wird mir zwar schlecht, aber wenns funktioniert. Und dafür habei ich heute den halben Vormittag verbraucht.
TEnumObjectList<T> = class(TInterfacedObject, IEnumerable<T>)
private FList: TObjectList; public constructor Create(AList: TObjectList); function GetEnumerator: IEnumerator; function IEnumerable<T>.GetEnumerator = GetGenericEnumerator; function GetGenericEnumerator: IEnumerator<T>; overload; end; |
Re: IEnumerator<TObject> != IEnumerator<TObject>
Das hilft leider auch nicht. Der Compiler bringt ständig IEnumerator und IEnumerator<T> durcheinandern. Da ich jetzt keine Luste mehr habe, werde ich wohl oder übel meinen eigenen IEnumerator schreiben. Danke CodeGear für die verschwendete Zeit. IEnumerable kann so niemand implementieren. Das Interface ist nutzlos.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz