Visual Basic Extension Methods

In visual basic, extension methods are useful to extend the behaviour of existing types by adding new methods without modifying, deriving or recompiling the original types such as class, structure or interface.

 

In visual basic, we can implement our own extension methods for any .NET type such as custom class, .NET framework class or third party classes.

 

To create an extension method, we need to import System.Runtime.CompilerServices namespace in module and implement an extension method by adding <Extension()> attribute with the required parameters. The first parameter of the method will specify the type on which the extension method will operate on.

 

Following is the example of implementing an extension method for System.String class.

 

Imports System.Runtime.CompilerServices

Imports System.Text.RegularExpressions

 

Module StringExtension

    ' Extension Method for String type

    <Extension()>

    Function IsValidEmail(ByVal str As String) As Boolean

        Dim result = Regex.IsMatch(str, "^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")

        Return result

    End Function

End Module

If you observe above example, we are extending the behaviour of string type by creating IsValidEmail extension method.

 

Now, we need to include StringExtension namespace in our application wherever we want to access IsValidEmail extension method like as shown below.

 

Import ConsoleApp1.StringExtension

After adding the namespace, we can access the extension method as an instance method of extended type like as shown below.

 

Dim mail As String = "support@tutlane.com"

Dim result = mail.IsValidEmail()

Visual Basic Extension Method Example

Following is the example of accessing IsValidEmail extension method by including StringExtension namespace.

 

Imports ConsoleApp1.StringExtension

 

Module Module1

    Sub Main(ByVal args As String())

        Dim mail As String = "support@tutlane.com"

        Dim result = mail.IsValidEmail()

        Console.Write("Is valid: {0} ", result)

        Console.ReadLine()

    End Sub

End Module

If you observe the above example, we included StringExtension namespace in our program and we are able to access IsValidEmail extension method as an instance method of string extension type.

 

When we execute the above program, we will get the result like as shown below.

 

Is valid: True

In the above example, we extended the behaviour of .NET framework System.String class type. The same way we can extend the behaviour of custom classes also based on our requirements.

 

While creating an extension method for a specific type, we need to make sure that the same signature of method will not exist for the specified type otherwise the extension method will never be called.

Visual Basic Extension Methods Overview

Following are the important points which we need to remember about extension methods in visual basic.

 

  • Extension methods are useful to extend the behaviour of existing types without modifying, deriving or recompiling the original types.
  • We can create an extension method for any .NET type such as custom class, .NET framework class or third party classes.
  • In visual basic, the extension methods can be defined by importing System.Runtime.CompilerServices namespace in module and implement an extension method by adding <Extension()> attribute.
  • The first parameter of the extension method will specify the type on which the method will operate on.
  • The extension methods can be used anywhere in our application by including the namespace of our extension method.
  • In visual basic, the extension methods can be accessed like an instance method of extended type.

Topics Covered