![]() |
Delphi-Version: XE2
Enums in Interfaces?
Ich bin ein Freund von inneren Typen, beispielsweise TMeineKlasse.TMeinEnum = (eins, zwei, drei). Sieht man ja in der VCL auch häufiger.
Nun scheitere ich daran, in ein Interface eine Typdeklaration zu pflanzen. Typdeklarationen mag er nicht:
Delphi-Quellcode:
Mir ist die Klasse
ISomeInterface = interface
type TSomeEnum = (eins, zwei, drei); // Geht nicht end;
Delphi-Quellcode:
vor die Füße gefallen, aber weder habe ich die jemals gesehen noch wüsste ich spontan damit etwas anzufangen. Bleibt mir etwas anderes übrig, als das Enum aus der Klasse herauszuziehen?
Vcl.OleCtrls.TOleEnum
Delphi-Quellcode:
TSomeEnum = (eins, zwei, fünnef);
ISomeInterface = interface function getEnum(): TSomeEnum; end; |
AW: Enums in Interfaces?
Diese Funktionalität wird in Interfaces wie sie Windows kennt nicht unterstützt. Die Interfaces in Delphi können das daher auch nicht. (Deshalb gibt es auch keine Generics innerhalb eines Interfaces auf einzelne Felder oder Methoden.)
|
AW: Enums in Interfaces?
Zitat:
|
AW: Enums in Interfaces?
Der Ansatz, den ich auch aus C# kenne, definiert die Typen zusammen mit dem Interface in einer Datei (ob sich das nun 'unit' oder "Namespace" nennt, finde ich relativ Wurscht):
Delphi-Quellcode:
Interfacedefinitionen sind halt eine relativ flache Angelegenheit.
unit TestInterface;
interface type TEnum = (eins, zwei, drei); ISomeInterface = interface function GetEnum(): TEnum; end; implementation end. |
AW: Enums in Interfaces?
Ja, nun. Das Enum kann auch in eine eigene Datei. Ist auch wurscht, aber wenn schon alles separieren, dann alles separieren :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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