AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit IEnumerable und generics

Ein Thema von KalEl · begonnen am 24. Aug 2011 · letzter Beitrag vom 24. Aug 2011
Antwort Antwort
KalEl

Registriert seit: 17. Jun 2010
14 Beiträge
 
Delphi 2 Desktop
 
#1

Problem mit IEnumerable und generics

  Alt 24. Aug 2011, 09:54
Delphi-Version: 5
Hallo, ich versuche eine Klasse zu basteln die IEnumerator als generic implementiert und habe damit unter Delphi 2009 und 2010 ein Problem, nämlich dass IEnumerator<T> sich von IEnumerator ableitet und beide Interfaces eine GetCurrent Methode enthalten, einmal als function GetCurrent : TObject und einmal als GetCurrent : T

Als Beispiel habe ich eine kleine Klasse implementiert die im Prinzip nur einen Vektor darstellt:

Code:
type
  TVectorClass = class(TObject)
    private
      fX,fY,fZ : Single;
    public
      property x : Single read fX;
      property y : Single read fY;
      property z : Single read fZ;

      constructor Create(x,y,z : Single);
  end;

Nun den entsprechenden IEnumerator dazu:

Code:
type
  TVectorEnumerator = class(TInterfacedObject, IEnumerator<TVectorClass>)
    private
      F_ve : TVectorEnumerable;
      iIndex : Integer;

    public
      constructor Create(rea : TVectorEnumerable);

      function GetCurrent() : TVectorClass;
      function MoveNext() : Boolean;
      procedure Reset();
  end;

Beim Versuch das zu compilieren erhält man einen E2003: Undeklarierter Bezeichner GetCurrent. Natürlich kann man auch nicht beide GetCurrent Methoden parallel implementieren über overload, da sie die selben Parameter (nämlich keine) verwenden... gibt es da irgendeine Lösung wie man einen generischen IEnumerator implementieren kann?

Ich habe einen alten thread gefunden in dem es wohl um das selbe Problem ging, aber da wurde scheinbar keine Lösung gefunden: http://www.delphipraxis.net/126890-i...r-tobject.html

Wäre für jeden Tip dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Problem mit IEnumerable und generics

  Alt 24. Aug 2011, 10:03
Die Methoden eines Interfaces kann man auch von einem Sub-Objekt via implements implementieren lassen.
Dadurch müsstest du dem Konflikt aus dem Weg gehen können.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Problem mit IEnumerable und generics

  Alt 24. Aug 2011, 12:33
Dass IEnumerable<T> von IEnumerable und IEnumerator<T> von IEnumerator ableitet, ist eins der dümmsten Aktionen, die sie jemals fabriziert haben. Ja, fein von .Net abgeguckt, aber vergessen, dass Delphi nicht jeden Typ von object ableitet. Ja, es gibt Workarounds. Ich würde aber für deine Fall vorschlagen, dass du dir IEnumerator<T> redefinierst und dann nicht von IEnumerator ableitest. Da diese Interfaces eh fast nirgendwo in Delphi verwendet werden (sie wissen schon, warum...) dürfte das ohne Probleme gehen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz