AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism [.Net] TypeOf(Klasse) polymorph instanzieren
Thema durchsuchen
Ansicht
Themen-Optionen

[.Net] TypeOf(Klasse) polymorph instanzieren

Ein Thema von maximov · begonnen am 9. Dez 2004 · letzter Beitrag vom 10. Dez 2004
Antwort Antwort
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#1

[.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 9. Dez 2004, 12:12
Moin,

wenn ich unter delphi.net einen meta-typ (&Type), einer bestimmten klasse, habe; Kann man daraus irgendwie eine instanze erstellen, oder ist dies nur mit meta-klassen möglich?

Das problem ist, dass man attribute nur mit konstanten ausdrücken erstellen kann. Meta-classen gelten leider nicht als konstant, typen hingegen schon. Was soll das?

Delphi-Quellcode:
type
  MyObject = class (&object)
  public
    constructor Create; virtual;
  end;

  MyClass = class of MyObject ;

...

  [MyAttributeTest(MyObject )] // geht nicht, weil nicht konstant
  [MyAttributeTest(typeOf(MyObject))] // geht
Deshalb die frage, ob ich aus dem typ eine instanze erstellen kann. Oder habt ihr andere ideen?

[edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit]
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
lizzard

Registriert seit: 31. Aug 2004
17 Beiträge
 
Delphi 2005 Professional
 
#2

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 9. Dez 2004, 12:33
Hi -

aus dem Typ eine Instanz geht so (angenommen, die Variable typ sei vom Typ System.Type):

Delphi-Quellcode:
var o : MyObject;
...
o:=MyObject(System.Activator.CreateInstance(typ));
So bauen wir Plugins zusammen, die Idee mit den Attributen ist auch interessant. Was genau willst du denn für Objekte übergeben? Woher kommen denn dann die dynamischen Attributwerte?

Viele Grüße
Phil
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#3

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 9. Dez 2004, 12:46
Zitat von lizzard:
Hi -

...

So bauen wir Plugins zusammen, die Idee mit den Attributen ist auch interessant. Was genau willst du denn für Objekte übergeben? Woher kommen denn dann die dynamischen Attributwerte?

Viele Grüße
Phil
Danke!

Der dynamische attributwert ist ja die übergebene klasse, oder eben der typ. Ich will zB. die klasse für einen PropertyDescriptor definieren, der seine einstellungen dann aus weiteren attributen holt. Zusammen mit einem typeConverter kann man den PropertyGrid, dann lustige sachen unterjubeln. Würde auch ohne 'Custom'-PropertyDescriptor pro propertiy gehen, aber dann hat man noch schönere möglichkeiten die property zu verbiegen

Wenn ich da eine saubere sache habe, werde ich es vielleicht auch in die CodeLib stellen. zB. interessant wenn man Anwendung-einstellungs-properties mit schönes DisplayNamen versehen, lokaliesieren oder subProperties haben will. etc.

mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#4

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 9. Dez 2004, 13:32
Zitat von lizzard:
Delphi-Quellcode:
var o : MyObject;
...
o:=MyObject(System.Activator.CreateInstance(typ));
Mit dieser möglichkeit scheint ein aufruf des virtuellen konstruktor jedoch ausgeschlossen. Besteht eine chance, dass dies irgendwie geht? Denn als delphi programmierer möchte man natürlich ungern auf virtuelle konstruktoren verzichten.

Oder sollte man eine fabrik zwischen schalten?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#5

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 10. Dez 2004, 10:25
OK! Habs geschnallt .Net sucht sich den best passenden konstruktor, zu der übergebenen ArgList *g* Also ist es doch möglich polymorphe konstruktoren, mit hilfe des meta-typs, zu instanzieren.

Danke nochmal
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
lizzard

Registriert seit: 31. Aug 2004
17 Beiträge
 
Delphi 2005 Professional
 
#6

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 10. Dez 2004, 15:08
Jetzt bist du mir zuvor gekommen - jaja, .NET ist da find ich sehr angenehm, Reflection ist - wie auch in Java - ein echtes Göttergeschenk, finde ich.

Happy Coding!
Phil
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#7

Re: [.Net] TypeOf(Klasse) polymorph instanzieren

  Alt 10. Dez 2004, 15:35
Zitat von lizzard:
Jetzt bist du mir zuvor gekommen - jaja, .NET ist da find ich sehr angenehm, Reflection ist - wie auch in Java - ein echtes Göttergeschenk, finde ich...
Find ich auch. Dagegen wirkt die win32 RTTI wie ein schlechter scherz auch wenn sie ihren zweck erfüllt. Und attribute sind ja wohl nur geil ^3
mâxîmôv.

{KDT}
  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 11: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