Was sind deine bevorzugten Erweiterungsmethoden für C #? (codeplex.com/extensionoverflow)
Let ' s machen Sie eine Liste von Antworten, wo Sie nach Ihrem hervorragenden und bevorzugten erweiterungsmethoden.
Voraussetzung ist, dass der vollständige code gepostet werden müssen und ein Beispiel und eine Erklärung, wie es zu benutzen.
Aufgrund des hohen Interesses an diesem Thema habe ich setup ein Open-Source-Projekt namens extensionoverflow auf Codeplex.
Bitte markieren Sie Ihre Antworten mit einer Abnahme um den code in die Codeplex-Projekt.
Poste bitte den vollständigen Quellcode und nicht auf einen link.
Codeplex-News:
24.08.2010 Der Codeplex-Seite ist jetzt hier: http://extensionoverflow.codeplex.com/
11.11.2008 XmlSerialize /XmlDeserialize ist jetzt Umgesetzt und Gerät Getestet.
11.11.2008 Es ist noch Platz für weitere Entwickler. 😉 JETZT mitmachen!
11.11.2008 Dritten Mitwirkender trat ExtensionOverflowwillkommen BKristensen
11.11.2008 FormatWith ist jetzt Umgesetzt und Gerät Getestet.
09.11.2008 Zweiten Mitwirkender trat ExtensionOverflow. willkommen zu chakrit.
09.11.2008 Wir brauchen mehr Entwickler. 😉
09.11.2008 ThrowIfArgumentIsNull jetzt Umgesetzt und Gerät Getestet auf Codeplex.
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erlaubt, mich zu ersetzen:
Mit:
InformationsquelleAutor der Antwort
Habe ich verschiedene Verlängerung Methoden, die in meinem MiscUtil Projekt (vollständige Quelle verfügbar ist - ich werde mich nicht hier wiederholen). Meine Favoriten, von denen einige mit anderen Klassen (z.B. Bereiche):
Datum und Uhrzeit Zeug - meist für unit-tests. Nicht sicher, ob ich Sie in der Produktion nutzen 🙂
Reicht und stepping - massive Dank an Marc Gravell für seine Betreiber Zeug um dies möglich zu machen:
Vergleiche:
Argument überprüfen:
LINQ to XML angewendet, um anonyme Typen (oder andere Typen mit entsprechenden Eigenschaften):
Push-LINQ - würde zu lange dauern, um hier zu erklären, aber für ihn zu suchen.
InformationsquelleAutor der Antwort
string.Format-Verknüpfung:
Beispiel:
Für quick copy-und-paste gehen hier.
Finden Sie es nicht natürlicher zu geben
"some string".F("param")
stattstring.Format("some string", "param")
?Für eine lesbar Namen, versuchen Sie eine dieser Vorschlag:
..
InformationsquelleAutor der Antwort
Sind diese alle verwenden?
InformationsquelleAutor der Antwort
Beispiel:
InformationsquelleAutor der Antwort
Extension Methode:
Die Methode gilt für alle Arten und Sie können fügen Sie einen Bereich von Elementen an eine Liste als Parameter.
Beispiel:
InformationsquelleAutor der Antwort
Durch alle Mittel, diese in die codeplex-Projekt.
Serialisieren /Deserialisieren Objekte nach XML:
InformationsquelleAutor der Antwort
ForEach für IEnumerables
Naive Beispiel:
Coole Beispiel:
Hinweis:
Dies ist nicht wie
Select
weilSelect
erwartet Ihre Funktion etwas zurückgeben, als für die Umwandlung in eine andere Liste.ForEach einfach können Sie zu führen etwas für jeden der Gegenstände, die ohne irgendwelche Umwandlungen/Daten manipulation.
Ich dies gemacht, so kann ich das Programm in ein mehr funktionale Stil, und ich war überrascht, dass die Liste ForEach während IEnumerable nicht.
Legen diese in den codeplex-Projekt
InformationsquelleAutor der Antwort
Meiner Bekehrung Erweiterungen, mit denen Sie zu tun:
Hier ist es, wie gepostet auf TheSoftwareJedi.com
Können Sie Fragen, für Standard - (ruft leeren Konstruktor oder "0" für Numerik) auf Fehler, geben Sie "default" Wert (ich nenne es "andere"), oder bitten Sie um null (where T : class). Ich habe auch vorausgesetzt, beide silent Ausnahme der Modelle, und eine typische TryParse-Modell gibt einen booleschen Wert, der angibt, der ergriffenen Maßnahmen und out-param enthält den neuen Wert.
Also unser code können Dinge tun, wie diese
Konnte ich nicht Nullable-Typen, die zu Rollen in der ganzen Sache sehr sauber. Ich habe versucht, für etwa 20 Minuten, bevor ich das Handtuch warf.
InformationsquelleAutor der Antwort
Habe ich eine extension Methode für die Protokollierung von Ausnahmen:
Und es wird wie folgt verwendet:
[sorry für die Buchung zweimal; die 2. ist besser designed :-)]
InformationsquelleAutor der Antwort
Sinnvoll zu Parsen einen string in ein Enum.
Kredit geht an Scott Dorman
--- Edit für die Codeplex-Projekt ---
Habe ich mich gefragt, Scott Dorman, wenn er was dagegen hätte, uns die Veröffentlichung seines Codes in das Codeplex-Projekt. Dies ist die Antwort, die ich von ihm bekam:
InformationsquelleAutor der Antwort
Ich finde dieses hier ziemlich hilfreich:
Benutzen, können Sie es auf CodePlex.
InformationsquelleAutor der Antwort
DateTimeExtensions
Beispiele:
InformationsquelleAutor der Antwort
gitorious.org/cadenza ist eine vollständige Bibliothek von einigen der nützlichsten Erweiterung Methoden die ich gesehen habe.
InformationsquelleAutor der Antwort
Hier ist eine, die ich Häufig verwenden für die Darstellung zu formatieren.
InformationsquelleAutor der Antwort
Hier ein an-und-aus für die römischen Ziffern. Nicht oft benutzt, könnte aber nützlich sein. Verwendung:
Quelle:
InformationsquelleAutor der Antwort
Ein bequemer Weg, um mit Größen:
InformationsquelleAutor der Antwort
Für Winform-Controls:
IsDesignTime Verwendung:
SetDropdownWidth Verwendung:
Ich vergaß zu erwähnen, fühlen Sie sich frei zu verwenden, diese auf Codeplex...
InformationsquelleAutor der Antwort
Den ThrowIfArgumentIsNull ist eine nette Weise, das zu tun, null-check sollten wir alle tun.
Unten ist der Weg, es zu benutzen und es funktioniert auf allen Klassen in den namespace oder wo auch immer Sie verwenden den namespace seine innerhalb.
Es ist ok, um diesen code zu verwenden, der auf der CodePlex Projekt.
InformationsquelleAutor der Antwort
Ich vermisse die Visual Basic-Anweisung Mit beim Umzug nach C#, also hier geht es:
Und hier ist, wie Sie es in C#:
Spart eine Menge Tipparbeit!
Vergleichen:
setzen in codeplex-Projekt
InformationsquelleAutor der Antwort
Dauert camelCaseWord oder PascalCaseWord und "wordifies", dh camelCaseWord => camel-Case Word -
Häufig verwende ich es in Verbindung mit Kapital
Beispiel für die Verwendung
Kostenlos zu benutzen, die in codeplex-Projekt
InformationsquelleAutor der Antwort
Ich fand diese einen hilfreich
Entfernt es die null-check in den aufrufenden code. Sie konnte nun tun,
InformationsquelleAutor der Antwort
Konvertieren von double zu string, formatiert mit der angegebenen Kultur:
Beispiel:
InformationsquelleAutor der Antwort
Unten ist ein extension-Methode passt, dass Von Rick Strahl - code (und die Kommentare) zu stoppen, wenn Sie haben zu erraten, oder Lesen Sie die byte order mark) von einem byte-array oder text-Datei, jedes mal, wenn Sie es in einen string konvertieren.
Snippet ermöglicht es Ihnen, einfach das zu tun:
Wenn Sie irgendwelche bugs finden, fügen Sie bitte die Kommentare. Fühlen Sie sich frei, um es in der Codeplex-Projekt.
InformationsquelleAutor der Antwort
Hier habe ich gerade heute erstellt.
Es können Sie dies tun:
ist fließend und (IMO) einfacher zu Lesen als:
InformationsquelleAutor der Antwort
"Bitte markieren Sie Ihre Antworten mit einer Abnahme um den code in die Codeplex-Projekt".
Warum? Alle Sachen auf dieser Seite unter CC-by-sa-2.5so setzen Sie Ihre Erweiterung überlauf Projekt unter der selben Lizenz und können Sie frei verwenden.
Anyway, hier ist ein String.Reverse-Funktion, basierend auf diese Frage.
InformationsquelleAutor der Antwort
Bekam ich müde von langweiligen null-Prüfung beim ziehen von Werten aus MySqlDataReader, also:
Natürlich könnte dies mit einem SqlDataReader.
Beide hangy und Joe hatte einige gute Kommentare auf, wie dies zu tun, und ich habe da eine Möglichkeit zu implementieren, etwas ähnliches in einem anderen Kontext, so ist hier eine andere version:
InformationsquelleAutor der Antwort
Es irritiert mich, dass LINQ gibt mir ein OrderBy, nimmt eine Klasse die IComparer als argument, aber nicht unterstützen die Weitergabe in einem einfachen anonymen Vergleichs-Funktion. Ich berichtigt.
Diese Klasse erstellt ein IComparer von Ihrer comparer-Funktion...
...und diese Erweiterung Methoden setzen meine neue OrderBy überlastungen auf enumerables. Ich bezweifle, dass diese Werke für LINQ to SQL, aber es ist toll für LINQ to Objects.
Du bist willkommen, dies auf codeplex, wenn Sie mögen.
InformationsquelleAutor der Antwort
Dieser ist für MVC, fügt es die Fähigkeit zu generieren
<label />
tag derHtml
variable, die in jedemViewPage
. Hoffentlich wird es von nutzen sein, um anderen, die versuchen, ähnliche zu entwickeln Erweiterungen.Verwenden:
Ausgabe:
Code:
InformationsquelleAutor der Antwort
Drehen:
... in:
... mit dieser Erweiterung Methode:
Mehr ADO.NET extension Methoden: DbExtensions
InformationsquelleAutor der Antwort