C Sharp - Extensions

Mitglied: Blueberry

Blueberry (Level 1) - Jetzt verbinden

07.02.2012, aktualisiert 24.02.2012, 6876 Aufrufe, 2 Kommentare, 1 Danke

In dieser kleinen Anleitung, möchte ich zeigen, was Extensions sind und wie man sie unter C# einsetzt.
Beiläufig wird es noch Typen-Konvertierungen beinhalten, damit das auch mal geklärt ist.

Extension Method - Was ist das?
Mittels einer extension Method kann man einen Datentyp erweitern, d.h. wenn ich eine extension Method für den Datentyp String definiere, kann man darauf zugreifen, als ob man auf eine andere schon vorhandene bzw. schon in der String-Class implementierte Methode zugreift.

Bedingungen einer extension Method
Um eine extension Method zu schreiben, muss man lediglich ein paar Kleinigkeiten beachten:
    • Die Klasse in der die Methode geschrieben wird, muss statisch sein
    • Die Methode selbst muss auch statisch sein
    • Der erste Parameter muss vom entsprechenden Datentype sein und muss mit this versehen sein (siehe unter Implementierung)
    • Man braucht dazu mind. das .NET-Framework 3.5 (oder höher selbstverständlich)

Implementierung
Hier ein paar Beispiele

Unter dem Code gibt es noch eine Erklärung
Hier sieht man den gesamten Aufbau, die statische Klasse, die statische Methoden und auch die mit dem this versehenen Parameter. Man sieht in der ToInt32-Überladung, dass man auch auf extension Methoden in einer Extension zugreifen kann. Dass ermöglicht einem, dass man auch bei extension Methoden nichts zwei Mal implementieren muss. Die ToBool-Methode finde ich vorallem sehr praktisch, da man diese ganz einfach erweitern kann. Man könnte z.B. auch eine CSV exportieren und dort diese für den Benutzer bereitstellen, so kann er selbst entscheiden, was true oder false ergeben soll.

Man kann auch Generics verwenden und die Extensions sind nicht nur auf die Basis-Typen anwendbar:
Mit solchen Extensions könnt ihr gut konvertierungen machen und müsst nicht mehr gross an die Typen-Konvertierung denken, wenn ihr am Arbeiten seid. Natürlich könnt ihr auch andere Funktionalitäten, welche nicht unbedingt eine Type-Konvertierung brauchen mittels Extensions implementieren, allerdings habe ich dafür noch nicht wirklich anwendung gefunden...

Edit: Habe jetzt auch schon eine Extension, welche nicht unbedingt eine Typen-Konvertierung beinhaltet.
Es geht dabei um eine Extension, welche tatsächlich neue Funktionalität zur Verfügung stellt. Die unten gezeigte Extension greift auf die User32.dll zu und ändert den Status der ProgressBar, damit man trotz aktiven Visual-Styles eine rote ProgressBar hinbekommt, ich konnte diese Methoden schon öfters gebrauchen.


Ich hoffe das Tut konnte euch etwas veranschaulichen, was eine Extension ist und wie man sie implementiert und anwendet.
Über Feedback und Kritik freue ich mich immer, allerdings ist es mein erstes Tut welches ich schreibe, seid also nicht zu hart zu mir ;-) face-wink.
Wenn ihr Verbesserungsvorschläge habt, dann sagt mir unbedingt bescheid!

Edit: Stream-Extension 'GetData' Seek-Unabhängig implementiert.
Mitglied: Herbrich19
20.02.2012, aktualisiert 21.02.2012
Kann ich zwar in Moment nicht wirklich gebrauchen, aber sehr schön übersichtlich. Ich werde unbedingt mal eine kleine Test-App schreiben und es mal testen, aber so kann man sich wirklich die Arbeit an den Konvertierungen sehr stark vereinfachen.

Grüße, Herbrich17
Bitte warten ..
Mitglied: Blueberry
22.02.2012 um 16:13 Uhr
Hallo Herbrich17

Vielen Dank für dein Feedback!
Ich habe mittlerweilen auch eine Extension geschrieben, welche nicht nur für Typen-Konvertierung geeignet ist, ich habe (bzw. werde) diese oben im Beitrag noch erweitern zum zeigen, dass man die Extensions auch für andere Sachen gebrauchen kann.

Gruss Blueberry
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Unterschiedliche IP-Adressbereiche im Netzwerk
achkleinVor 1 TagFrageLAN, WAN, Wireless17 Kommentare

Hallo, ich stehe vor einem Problem mit der WLAN-Verbindung zum Router (Fritzbox Cable 6490). Das verbundene Notebook hat die Adresse 192.168.0.164, Gateway ist 192.168.0.149: ...

Off Topic
Microsoft und der (leidige) Datenschutz
Franz-Josef-IIVor 1 TagAllgemeinOff Topic18 Kommentare

Hello Ich möchte vorausschicken, daß ich rein prinzipiell nichts gegen Microsoft habe, eher gegen die US-amerikanische Politik 😊 Microsoft bietet die Datenverarbeitung in der ...

Off Topic
32 bit Problem
brammerVor 1 TagAllgemeinOff Topic9 Kommentare

Hallo, also das ist mal ein Problem das ich auch haben möchte eine Aktie ist mehr Wert als das die Börsensoftware darstellen kann. brammer

Hardware
Thin- oder Zero-Client für RDP und Dual-Monitor im LAN gesucht
FestplattenaufzieherVor 1 TagFrageHardware9 Kommentare

Hallo, Kurzfassung meiner Frage: Ich suche Thin/Zero-Clients (4 Stück) mit Dual-Monitor-Unterstützung für den RDP-Zugriff auf PCs in einem LAN - idealerweise lautlos und relativ ...

Windows 10
Windows 10 2021-04 end of life?
gelöst Paedi12Vor 1 TagFrageWindows 103 Kommentare

Hi Leute! Ich bin gerade auf der Suche, wie lange die Windows Version 2021-04 unterstützt wird. Kann aber nichts finden. Hat jemand eine Ahnung, ...

Switche und Hubs
Netgear Switch Problem bei VLAN Konfiguration
gelöst meltersVor 1 TagFrageSwitche und Hubs15 Kommentare

Hallo, ich habe einen Netgear XS716T Switch zum Testen in Betrieb genommen, komme aber mit der VLAN Konfiguration nicht so ganz klar. Bislang habe ...

Router & Routing
Suche Tipps für Selfmade-Load-Balancing-Router auf HP MicroServer Gen10+
gelöst MagicChris86Vor 1 TagFrageRouter & Routing7 Kommentare

Hi Leute, ich habe einen HP MicroServer Gen10+ Performance übrig, der bei einer Kundin rausgeflogen ist, weil sie mehr Power brauchte für Desktopvirtualisierung für ...

LAN, WAN, Wireless
Richtfunk Beratung
gelöst PretreVor 1 TagFrageLAN, WAN, Wireless5 Kommentare

Hallo zusammen, hab folgendes vor, die 2 Standorte sollen per Richtfunk (PTMP) mit Internet versorgt werden. Habs mal skizziert, denke das ist einfacher zu ...