Eigenes Typemodel/System
-
Hallo Leute,
Beispiel:
Ich hab ein eigenes Typsystem, d.h. Ich lese typen ( typetemplates) in einem best Format ein und generiere Instanzen davon, jede Instanz hat zur Laufzeit den Typ "Foo" wobei diese Instanz meine expliziten bzw. Konkreten Typ Infos als properstes etc. meines typetemplates enthalt.
Nun könne ich aber auch dynamisch konkrete Typen mit dem DOM typebuilder etc. Erzeugen. Coole Sache eig. Aber wie Performanz ist dies im vergleiche zu einem eigenen zugeschnittenen Typsystem?
Hoffe ihr hab mein "denken" verstanden:)
Schönen sonnstag
-
Nee. Ich bild mir zwar ein, dass ich mir so in etwas vorstellen kann, worauf du hinauswillst, aber auf jeden Fall ist es alles recht vage beschrieben. Beschreib das etwas konkreter, mit paar Beispielen.
-
Ok sagen wir mal ich habe ein Basis "Container" Klasse , welche Element vom Basis-Typ "Base" enhalten kann (wobei Container auch von Base ableitet).
class Container : Base { ... public string TypeName{get; ...} public IEnumerable<Base> Elemente{get;...} }
Nun will ich ein Container-Typ erstellen! Ein Container-Typ definiert sich durch einen eindeutigen Typ-Namen, und eine best. Elementen!
Wenn ich einen Container-Typ instanziiere, werden die typ-definierten Elemente angelegt !
public Container Create(string typeName) { return new Container(typeName....., new[]{ ... ELEMENTE ....}; }
In dem Fall sind nun meine Elemente alle vom .NET Typ Base bzw. Container, wobei sich hinter dem Typ Container andere eigenen (pseude) Typen verbirgt, weleche sich eben durch den TypeNamen Property erkennen lässt.
Nun könne ich aber auch zur Laufzeit mit dem Reflections.emit oder CodeDOM zur Laufzeit einfach neue c# Typen erzeugen, die vom typ Container ableiten, so definiere ich konkrete typen...die frage ist, ob das besser bzw. performanter ist, Vorteil ich kann dann reflections um typen zu filtern etc.
Also bspw. mit CodeDom zur Laufzeit
class MyType: Container
{}
compiliere und in eine eigen assembly verwalte!?
Grüße ris
-
NullBockException schrieb:
frage ist, ob das besser bzw. performanter ist, Vorteil ich kann dann reflections um typen zu filtern etc.
Schneller als was? Als Reflection? Mir ist noch nicht wirklich klar, wie dein Typsystem bisher technisch funktioniert.
Auf jeden Fall wird die Performance von dynamisch kompiliertem Code kaum zu schlagen sein. Da kommt Reflection nicht ran. Außer, du machst quasi nichts mit deinen neuen Typen und brauchst sie nur ein mal, dann wär das natürlich eher kontraproduktiv.
Reflection ist an sich schon recht schnell in .NET. Ich hab früher einiges damit gemacht und es war einfach schnell genug, es war bisher nicht wirklich nötig, dynamisch Code zu generieren. Wenn dir die jetzige Performance deiner Lösung auch reicht, brauchst du das ja auch nicht verbessern. Außer zum Spass.