Extensions

    • VB.NET

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

      Abend,

      da mein Tutorial hier doch einige Problemchen aufweist hat sich EDR der Sache angenommen:
      Extensions und mehr.

      Es ist zwar kein sehr schweres Thema, allerdings wollte ich es hier mal erläutern, da es wichtiger Bestandteil der Programmierung
      ist und sich viele, gerade Anfänger, dieser Methode nicht bewusst sind.

      Die Rede ist von sog. Extensions, Extensions (Erweiterungen) ermöglichen das hinzufügen benutzerdefinierter Funktionen
      zu bereits vorhandenen Datentypen. Zu Beginn sei gesagt, Extensions können nur in Modulen definiert werden. Auch ist System.Runtime.CompilerServices
      zu importieren.

      Fangen wir an. Zuerst mal eine grundlegende Extension:

      VB.NET-Quellcode

      1. Option Strict On
      2. Imports System.Runtime.CompilerServices
      3. Module ExtensionModule
      4. <Extension()>
      5. Public Sub Alert(ByVal str As String)
      6. MessageBox.Show(str)
      7. End Sub
      8. End Module

      Aufrufen würde man das ganze dann per String.Alert().

      Soweit die einfachste Art einer Extension. Das Argument str behandelt den Datentypen, dem die Extension zugeordnet wird.
      Man kann auch noch weitere Argumente hinzufügen, dazu hier mehr:

      VB.NET-Quellcode

      1. Option Strict On
      2. Imports System.Runtime.CompilerServices
      3. Module ExtensionModule
      4. <Extension()>
      5. Public Sub Alert(ByVal str As String, ByVal Quantity As Integer)
      6. For count = 1 To Quantity
      7. MessageBox.Show(str)
      8. Next
      9. End Sub
      10. End Module

      Der Aufruf hierbei wäre String.Alert(Integer).

      Hier haben wir als 2tes Argument einen Integer, der die Anzahl der auszugebenden
      MessageBoxen wiederspiegelt. Da das erste Argument ja die zugrundeliegende Variable angibt,
      ist das 2te Argument das erste nutzerbasierte Argument. Damit ist gemeint, dass der Nutzer hier erstmals direkt
      Einfluss auf die Ausgabe nehmen kann (insofern man die zugrundeliegende Variable nicht zählt).

      Diese Argumente sind natürlich beliebig erweiterbar, natürlich können auch optionale Parameter angegeben werden.
      Optional ByVal Number As Integer = 1.

      Anbei findet ihr ein Beispielprojekt zum freien testen.
      Sollte ich noch Zeit finden hänge ich noch ein Tutorial für C# an.

      Grüße,
      Nikx
      Dateien
      • Extensions.zip

        (75,86 kB, 103 mal heruntergeladen, zuletzt: )
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Nikx“ ()

      Hi
      ich würde noch hinzufügen
      - wie Extensions abstrakt funktionieren, bzw. wie die Parametrisierung genau stattfindet
      - vllt. auch, ob ByRef auf dem ersten Parameter funktioniert, wie es sich mit Nullreferenzen verhält
      - welche Konventionen oder Regeln man beim Definieren von Extensions beachten sollte (z.B. warum das Alert-Beispiel keinen Sinn macht)
      - vielleicht noch ein (praxisbezogenes) Beispiel außerhalb des Projektordners

      Gruß
      ~blaze~