ARTICLE

Creating Instance of a Type Dynamically in VB.NET

Posted by Mahesh Chand Articles | Assemblies in VB.NET October 27, 2010
This code snippet demonstrates how to create an instance of a type dynamically in VB.NET.
 
Reader Level:

Recently, in my components library project, I needed to create instances of types dynamically and execute their methods using dynamic types.

Activator class can be used for this purpose. The CreateInstance method of Activator class takes a type and creates a Type object. Once we have a Type object, we can use InvokeMember method to execute a member of a type.

In this following code snippet, I create a Type objet of StringBuilder and invoke Append and ToString methods of StringBuilder.

Imports System

Imports System.Text

Imports System.Reflection

 

Module Module1

 

    Sub Main()

 

        Dim dynamicType As Type = GetType(StringBuilder)

 

        ' Create an instance of a Type by calling Activator.CreateInstance

        Dim dynamicObject As Object = Activator.CreateInstance(dynamicType)

 

        ' Invoke Append method to add string to StringBuilder

        dynamicType.InvokeMember("Append", _

           BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.InvokeMethod, _

           Type.DefaultBinder, dynamicObject, New Object() {"First String | "})

    

        dynamicType.InvokeMember("Append", _

           BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.InvokeMethod, _

           Type.DefaultBinder, dynamicObject, New Object() {" Second String Appended "})

 

        dynamicType.InvokeMember("Append", _

          BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.InvokeMethod, _

          Type.DefaultBinder, dynamicObject, New Object() {" Third String Appended "})

 

        ' Invoke ToString method to get string out of StringBuilder

        Console.Write(dynamicType.InvokeMember("ToString", _

          BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.InvokeMethod, _

           Type.DefaultBinder, dynamicObject, Nothing))

 

        Console.ReadKey()

    End Sub

 

End Module

 

 

Login to add your contents and source code to this article
share this article :
post comment
 
Team Foundation Server Hosting
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Nevron Diagram
Become a Sponsor