Sie können nicht. Instanzmethoden immer haben Vorrang vor Erweiterungsmethoden, vorausgesetzt, sie sind anwendbar. Die Mitgliederauflösung berücksichtigt nur Erweiterungsmethoden, wenn keine Option für eine Nicht-Erweiterungsmethode gefunden wurde.
Ich würde vorschlagen, dass Sie einfach Ihre Methode umbenennen - es sei denn, der Punkt war, diese Methode transparent mit vorhandenem Code aufzurufen.
Wenn Sie es ein IList<T>
statt List<T>
nehmen gemacht, könnten Sie einen Wrapper erstellen, die IList<T>
und die Delegierten alle Anrufe auf die gewickelte Liste implementiert, die Durchführung keine zusätzliche Aufgaben, wie Sie gehen. Sie könnten dann auch schreiben eine Erweiterungsmethode zu IList<T>
, die den Wrapper erstellt - die in einigen Fällen für flüssigere Syntax ermöglichen würde. Persönlich bevorzuge ich den Wrapper-Ansatz, um einen neuen Sammlungstyp abzuleiten, da dies bedeutet, dass Sie ihn mit Ihren vorhandenen Sammlungen verwenden können, wodurch der Code möglicherweise kleiner wird ... aber alles hängt davon ab, was Sie tun möchten.
Selbst wenn 'list.Add (" 3 ")' 'List.Add' überschrieben und Ihre Erweiterungsmethode aufgerufen wurde, sollten Sie erwarten, dass' list.Add (item) 'dasselbe tut, was zu einer unendlichen Rekursion führt. – Kobi
Ich sehe, meine Frage ist nur eine Frage der Neugier und ich gebe einen Beispielcode, nur um zu zeigen, was ich will, dennoch haben Sie Recht –