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.


Log in to reply