Laden...

Reflection und Kapselung umgehen ?

Erstellt von Tankian vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.292 Views
T
Tankian Themenstarter:in
81 Beiträge seit 2004
vor 19 Jahren
Reflection und Kapselung umgehen ?

Wollte im anderen Thread (Link) nicht offtopic-Fragen stellen, darum ein Extra Thread

Codebeispiele kennt ihr sicher zur Genüge,
ich bemerkte dass aber erst vor kurzem ..

Warum wird sowas aber in C# erlaubt ?
bzw. Warum sollte man als Entwickler wollen, dass es mit Reflection möglich ist ?

D
279 Beiträge seit 2004
vor 19 Jahren

Ich denke einer der Hauptgründe ist, dass sich damit viele weitere Möglichkeiten der Anwendungsentwicklung und Analyse eröffnen.

Beispielsweise gäbe es die tolle IntelliSense-Funktion von Visual Studio ohne die Metadaten der Assemblies (und Refelection) wahrscheinlich nicht. Auch Ildasm, den .NET Disassembler, gäbe es in dieser Form nicht.

Und die Möglichkeit Code 'on-the-fly' zu generieren (Reflection.Emit) würde auch fehlen...

T
Tankian Themenstarter:in
81 Beiträge seit 2004
vor 19 Jahren

Das sind alles Gründe für "Reflection".
Mir gings aber um Gründe für "Reflection um die Kapselung zu umgehen".

D
279 Beiträge seit 2004
vor 19 Jahren

Oh, tut mir Leid. Falsch verstanden bzw. Topic nicht gelesen..

C
980 Beiträge seit 2003
vor 19 Jahren

Original von Tankian
Mir gings aber um Gründe für "Reflection um die Kapselung zu umgehen".

Es erlaubt z.b. dinge wie Serialisierung und Object Mapping, ohne die Kapselung im Design zu beeinflussen (und ohne Mehraufwand)

333 Beiträge seit 2004
vor 19 Jahren

Reflection zu verwenden um an Daten heranzukommen die dem Programmierer an sich nicht zugänglich sind ist eher die Ausnahme, jetzt abgesehen von Dingen wie Serialisierung & Co. Die Möglichkeit über Reflection an alle Daten und Methoden eines Objekts zu kommen erhöht die Flexibilität erheblich. Versäumnisse des Programmiers lassen sich so auch bis zu einem gewissen Grad korrigieren, wobei das allerdings nicht der Grund für Reflection gewesen sein dürfte 🙂 Aber es ist einer der Gründe weshalb ich es zu schätzen weiß. Gerade auch wenn man eine fertige .NET-Komponennte als Binary hat sieht man oft das sich die Entwickler nicht gut genug gedanken darüber gemacht haben was nun private, protected oder public sein sollte. In dem moment hat man 2 Möglichkeiten: Viel Zeit investieren und alles neu machen oder einen kurzen überlegten Zugriff per Reflection 😉

([bb]|[^b]{2})

F
124 Beiträge seit 2004
vor 19 Jahren

ich hab in einem projekt reflection genutzt, um an alle bekannten klassen ranzukommen, die in ein bestimmtes interface implementieren. das war recht cool. ich brauchte nur eine weitere implementation erstellen und ohne weitere codeänderungen konnte die klasse dann überall im proggi verwendet werden.
Es ist ein Programm zum Zeichnen von Kalendern auf ein Bild rauf. Meine Schnittstelle ist IPaint (ein Objekt, dass sich auf ein Bild zeichnen kann) und Beispielklassen sind Schrift und der Sicherheitsrandindikator (macht bei 3 % des bildes einen rand, weil die druckerei nur bis dahin garantieren konnte, dass es dann auch auf dem ausgedruckten sichtbar ist)

also na gut, ich finde reflection geil.

ein teil von .net tv ( http://www.microsoft.com/germany/ms/msdnbiblio/dotnettv/index.htm ) geht auch über reflection. da sagt er irgendwie, dass menschen erwachsen sind, wenn sie über sich selbst nachdenken (reflektieren) und weil .net das kann, ist es ein erwachsenes framework 😁 naja ok bye