Erweiterungsmethoden - Bezugsklasse mit this erreichen?
-
Hey Leute!
Habe vor kurzem die Erweiterungsmethoden hier genutzt:
public static void Shuffle<T>(this IList<T> list) { Random rng = new Random(); int n = list.Count; while (n > 1) { n--; int k = rng.Next(n + 1); T value = list[k]; list[k] = list[n]; list[n] = value; } }
Ich wollte mal wissen ob ich mit dem keyword "this" Zugang zu den internen Methoden und Eigenschaften der List<T> Klasse hätte? Ich ging davon aus, da ich auch als Erweiterungsmethode Interesse an den internen Feldern usw. einer Klasse hätte um das Ganze "effizienter" zu erweitern.
Gibts da ne possibility
-
Falke88 schrieb:
Ich wollte mal wissen ob ich mit dem keyword "this" Zugang zu den internen Methoden und Eigenschaften der List<T> Klasse hätte?
Nein. Und das ist auch gut so.
-
Falke88 schrieb:
"effizienter"
Hast du denn einen Benchmark gemacht, der nachweist, daß diese Funktion zu langsam ist?
-
Falke88 schrieb:
Ich wollte mal wissen ob ich mit dem keyword "this" Zugang zu den internen Methoden und Eigenschaften der List<T> Klasse hätte?...
Nehmen wir einmal an es würde gehen, was hätte dies für Konsequenzen?
1. Member könnten unkontrolliert manipuliert werden.
2. Wenn bei einem .NET-Update die Implementierung geändert werden würde, wäre auf einmal die Erweiterungsmethode nicht mehr lauffähig.
3. Ein .NET-Programm mit einer Plugin-Schnittstelle könnte ohne größeren Aufwand um Keylogger etc. über ein Plugin erweitert werden, oder anderweitig den bestehenden Code zum Nachteil manipulieren.
...
-
asc schrieb:
1. Member könnten unkontrolliert manipuliert werden.
[...]
3. Ein .NET-Programm mit einer Plugin-Schnittstelle könnte ohne größeren Aufwand um Keylogger etc. über ein Plugin erweitert werden, oder anderweitig den bestehenden Code zum Nachteil manipulieren.Die Probleme bestehen wegen Reflection auch so.
-
audacia schrieb:
Die Probleme bestehen wegen Reflection auch so.
Ja, aber wenigstens ist der Aufwand etwas höher.