Einzelnen Beitrag anzeigen

Friday

Registriert seit: 6. Mai 2008
101 Beiträge
 
Delphi 11 Alexandria
 
#1

Spring4D Collections: IList.Where gibt ein TWhereIterator zurück

  Alt 30. Jan 2020, 13:30
Hallo,
ich habe eine
IList<IMyIntf> nun möchte ich diese Liste nach bestimmten Eigenschaften filtern, wozu ich diese Liste einer Funktion als Parameter übergebe und als Rückgabewert wieder eine IList<IMyIntf> bekomme / bekommen möchte.
Delphi-Quellcode:
function FilterNachBlau(aList: IList<IMyIntf>): IList<IMyIntf>;
begin
  Result := IList<IMyIntf>(aList.Where(function(const aMyIntf: IMyIntf): boolean
                          begin
                            Result := aMyIntf.InnerColor = clBlau;
                          end);
end;
Den Typecast ist notwendig da die Where Methode ein IEnumerable zurück gibt. Da IList von IEnumerable abgeleitet ist, sollte es keine Schwierigkeiten geben.

Der Debugger sagt mir nun aber dass der zurück gelieferte Typ "TWhereIterator" ist.
Und sobald ich auf die zurück gelieferte IList (die wohl keine IList ist) zugreife, kommt eine Exception "privileged instruction at 0x00e638e2"

Was mache ich falsch, bzw. geht das filtern auch anders? (natürlich ginge es in einer for schleife alles einzeln durchzugehen, das sollte aber nicht Sinn der Sache sein)

danke
  Mit Zitat antworten Zitat