Wann verwenden Sie Erweiterungsmethoden, ext. Methoden gegen Vererbung?
Begannen wir mit C# (.NET 3.0) und ich Frage mich, wie Sie Jungs sind mit extension-Methoden? Wann verwenden Sie Sie?
Außerdem würde ich es begrüßen, wenn Sie auch in einer Liste alle dunkel Voraussetzungen für Ihren Einsatz.
InformationsquelleAutor der Frage | 2009-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Male verwenden Dateiendung Methoden:
Ein Beispiel für den zweiten Punkt; das haben Sie vielleicht eine extension-Methode auf
IList<T>
(zum BeispielSort
), die geschrieben werden können, vollständig mit der vorhandenenIList<T>
Mitglieder... also warum zwingen, jemand anderes, etwas zu schreiben? Dies ist die Grundlage blockieren von LINQ, und erlaubt, dass Microsoft Ihnen viel weitere Funktionen, ohne dass etwas kaputtgeht.Zeiten zu nicht mit extension-Methoden:
InformationsquelleAutor der Antwort Marc Gravell
Erweiterung Methoden erlauben es, bestehende Klassen erweitert werden, ohne sich auf die Vererbung oder das ändern der Klasse source-code. Dies bedeutet, dass, wenn Sie hinzufügen möchten einige Methoden in die vorhandene String-Klasse, die Sie tun können es ganz leicht. Hier sind ein paar Regeln zu beachten bei der Entscheidung, ob oder nicht zu verwenden-extension Methoden:
Extension-Methoden können nicht verwendet werden, um die bestehende zu überschreiben Methoden
Erweiterung Methode mit demselben Namen und derselben Signatur wie eine Instanz-Methode wird nicht aufgerufen werden,
Dem Konzept der Erweiterung Methoden nicht angewendet werden können Felder, Eigenschaften oder Ereignisse
Verwenden Sie erweiterungsmethoden sparsam....überbeanspruchung kann eine schlechte Sache sein!
InformationsquelleAutor der Antwort
Ich mit extension-Methoden, wenn es Sinn macht. Wenn Sie eine Klasse und den zugehörigen code, den Sie in der Regel nicht brauchen, Erweiterung Methoden.
Wenn Sie nichteine Erweiterung Methode, die nützlich sein könnten.
Einem Ort, den ich Häufig mit extension-Methoden für [Flags] Enumerationen. Wenn Sie ein flag-based enumeration, es gibt einen ziemlich großen Ausdruck, die erforderlich ist, um zu bestimmen, ob oder nicht eine Aufzählung Wert hat ein bestimmtes flag gesetzt ist. Und so Baue ich die folgende extension-Methode, wenn ich ein [Flags] enumeration:
So, mein code sieht wie folgt aus:
Statt:
InformationsquelleAutor der Antwort Randolpho
Diesen link http://geekswithblogs.net/BlackRabbitCoder/archive/2010/04/26/c-extension-methods---to-extend-or-not-to-extend.aspx bietet eine gute Anleitung zum Gebrauch der Erweiterung Methoden und Wann nicht.
Zitat aus diesem Artikel:
InformationsquelleAutor der Antwort user3395318
Ehrlich, ich würde sagen, es ist leichter zu sagen, wenn es NICHT eine gute Idee, wenn dann ist es eine gute Idee.
Ich denke, der größte Vorteil an der Erweiterung Methoden ist, dass Sie die Akzeptanz der Methode. Dies ist, weil die Benutzer nicht haben, um zu instanziieren eine Instanz der anderen Klasse, um zu verwenden, Ihre Methode und intelisense werben mit Ihrer Methode, wenn ein Entwickler ist auf der Suche nach Methoden für die Klasse, die Sie erweitern. Dies könnte wichtig sein, wenn Sie versuchen, um andere Entwickler zu Folgen, einen neuen standard in Ihrem Unternehmen.
Wenn erwägen, ob oder nicht zu schaffen, eine Erweiterung Methode, erinnere mich an die SOLIDE Prinzipien.
Schließlich, extension-Methoden sind nur statische Methoden tragen ein neues Kleid. Also, an alle die Schwierigkeiten, die mit statischen Methoden (wie thread-Sicherheit, garbage collection, etc) kommen zusammen mit der Erweiterung Methoden ein, wenn Sie Sie umsetzen.
So, ich würde denken, lange und hart über das schreiben eine Methode als eine Erweiterung und überdenken über eine factory-und eine basic-Helfer Klasse statt.
Wenn Sie schreiben eine extension-Methode, bitte machen Sie es sich sehr einfach. Versuchen Sie zu vermeiden, dass alle Abhängigkeiten (oder pass alle Ihre Abhängigkeiten als Parameter). Und seien Sie vorsichtig, wie Sie verwalten den Speicher und Ressourcen sperren, in einer multi-threaded Umgebung.
InformationsquelleAutor der Antwort Rober
Welche Erweiterung Methoden?
Erweiterung Methoden ermöglichen das hinzufügen von Methoden zu bestehenden Typen ohne einen neuen abgeleiteten Typ neu kompilieren oder anderweitig geändert wird, die dem ursprünglichen Typ.
Erweiterung-Methode ist eine Besondere Art von statischen Methode, aber Sie aufgerufen werden, als wären Sie die Instanz-Methoden auf die erweiterte Form.
Wie mit extension-Methoden?
Erweiterung-Methode ist eine statische Methode in einer statischen Klasse, wo die "diese" Modifikator wird angewandt, um den ersten parameter. Der Typ des ersten Parameters wird der Typ, der erweitert wird.
Erweiterungsmethoden sind nur dann in Reichweite, wenn Sie explizit importieren Sie den namespace in Ihren Quellcode mit einer using-Direktive.
Wichtige Punkte für die Verwendung von extension-Methoden:
1.Eine Erweiterung Methode definiert werden muss, in eine top-level-statische Klasse.
2.Eine Erweiterung Methode mit demselben Namen und derselben Signatur wie eine Instanz-Methode nicht aufgerufen werden.
3.Extension-Methoden können nicht verwendet werden, um die bestehende zu überschreiben Methoden.
4.Das Konzept der Erweiterung Methoden nicht angewendet werden können Felder, Eigenschaften oder Ereignisse.
5.Übermäßiger Einsatz von erweiterungsmethoden ist kein guter Stil der Programmierung.
InformationsquelleAutor der Antwort AutomationNerd