Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   C# Übergeordneten Konstruktor aufrufen (https://www.delphipraxis.net/40323-uebergeordneten-konstruktor-aufrufen.html)

maximov 14. Feb 2005 13:19

Re: Übergeordneten Konstruktor aufrufen
 
Zitat:

Zitat von Robert_G
...
Bloß nicht!
Activator verwendet Reflection um die passende ConstructorInfo zu finden. Diese wird dann per Invoke aufgerufen -> viel zu langsam für die meisten Aufgaben!

Was soll man denn sonst tun? Virtuelle konstruktoren sind einfach nur geil und wenn die activator methode jetzt auch böse ist, soll man sofort ne abstrakte fabrik nehmen? Oder gibs unter .NET noch ander konzepte zum entkoppelten erzeugen der instanzen?

LarsMiddendorf 14. Feb 2005 13:26

Re: Übergeordneten Konstruktor aufrufen
 
Naja kommt auf den Anwendungszweck an. Wenn das ein mehr oder weniger einmaliger Aufruf ist, z.B. in einem Editor ein Objekt erstellen o.Ä. ist das akzeptabel. Tatsache ist aber auch, dass Methodenaufrufe über Reflection sehr langsam sind. Delphi .Net erstellt für jede Klasse noch eine zusätzliche Klasse mit den virtuellen Klassenmethoden und virtuellen Konstruktoren als virtuelle Methoden.
Die virtuellen Konstruktoren in Delphi sind eine schöne und vor allem typesichere Alternative gegenüber den normalen Factories.

Robert_G 14. Feb 2005 13:50

Re: Übergeordneten Konstruktor aufrufen
 
@maximov
Du kannst du ja ein wenig in Reflection.Emit belesen.
Damit kannst du deine Typen nicht nur dynamisch erzeugen sondern auch dyn. Assemblies erzeugen, die die Instanzierung und ähnliches erledigen.
Da diese in den RAM kompiliert werden gibt es keine Geschwindigskeitsverluste. (Ist aber alles andere als trivial ;) )

maximov 14. Feb 2005 14:04

Re: Übergeordneten Konstruktor aufrufen
 
@Emit: Ist vielleicht nicht trivial, dafür aber interessant.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 2 von 2     12   

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