Export (0) Print
Expand All

Activator.CreateInstance Method (String, String)

Creates an instance of the type whose name is specified, using the named assembly and default constructor.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

Public Shared Function CreateInstance ( _
	assemblyName As String, _
	typeName As String _
) As ObjectHandle


Type: System.String

The name of the assembly where the type named typeName is sought. For more information, see the Remarks section. If assemblyName is Nothing, the executing assembly is searched.

Type: System.String

The fully qualified name of the preferred type.

Return Value

Type: System.Runtime.Remoting.ObjectHandle
A handle that must be unwrapped to access the newly created instance.


typeName is Nothing.


No matching public constructor was found.


typename was not found in assemblyName.


assemblyName was not found.


The caller does not have permission to call this constructor.


You cannot create an instance of an abstract class, or this member was invoked with a late-binding mechanism.


The constructor, which was invoked through reflection, threw an exception.


The COM type was not obtained through GetTypeFromProgID or GetTypeFromCLSID.


Creation of TypedReference, ArgIterator, Void, and RuntimeArgumentHandle types, or arrays of those types, is not supported.


assemblyName is not a valid assembly.


The common language runtime (CLR) version 2.0 or later is currently loaded, and assemblyName was compiled for a version of the CLR that is later than the currently loaded version. Note that the .NET Framework versions 2.0, 3.0, and 3.5 all use CLR version 2.0.


An assembly or module was loaded twice with two different evidences.


The assembly name or code base is invalid.

Use ObjectHandle.Unwrap to unwrap the return value.

assemblyName can be either of the following:

  • The simple name of an assembly, without its path or file extension. For example, you would specify TypeExtensions for an assembly whose path and name are .\bin\TypeExtensions.dll.

  • The full name of a signed assembly, which consists of its simple name, version, culture, and public key token; for example, "TypeExtensions, Version=, Culture=neutral, PublicKeyToken=181869f2f7435b51".

For more information on how the common language runtime identifies and loads assemblies, see How the Runtime Locates Assemblies. For information on using the application configuration file to define assembly locations, see Specifying an Assembly's Location. If assemblyName is found, it is loaded in the default context.


Starting with the .NET Framework 2.0 Service Pack 1, this method can be used to create nonpublic types if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the assembly that contains the nonpublic types is restricted to the caller’s grant set or to a subset thereof. (See Security Considerations for Reflection.)

To use this functionality, your application should target the .NET Framework 3.5 or later.

The following example defines a class named Person in an assembly named PersonInfo. Note that the Person class has two constructors, one of which is parameterless.

Public Class Person
   Private _name As String 

   Public Sub New()
   End Sub 

   Public Sub New(name As String)
      Me._name = name
   End Sub 

   Public Property Name As String 
         Return Me._name
      End Get 
         Me._name = value
      End Set 
   End Property 

   Public Overrides Function ToString() As String 
      Return Me._name
   End Function 
End Class

The following example calls the CreateInstance(String, String) method to instantiate the Person class. It requires a reference to PersonInfo.dll to be added to the project. Because the CreateInstance(String, String) method calls the Person class default constructor, the example assigns a value to its Name property.

Imports System.Runtime.Remoting

Module Example
   Public Sub Main()
      Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
      Dim p As Person = CType(handle.Unwrap(), Person)
      p.Name = "Samuel"
   End Sub 
End Module 
' The example displays the following output: 
'       Samuel

However, CreateInstance is frequently called to instantiate a type that crosses machine boundaries or that is not known at design time. In this case, you cannot include a reference to the assembly in the project and cannot make early-bound calls to the type's members. To work around this limitation, the following example uses the CreateInstance method along with reflection to assign a value to the Person object's Name property and to display its value.

Imports System.Reflection
Imports System.Runtime.Remoting

Module Example
   Public Sub Main()
      Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
      Dim p As Object = handle.Unwrap()
      Dim t As Type = p.GetType()
      Dim prop As PropertyInfo = t.GetProperty("Name")
      if Not prop Is Nothing Then
         prop.SetValue(p, "Samuel")
      End If    
      Dim method As MethodInfo = t.GetMethod("ToString")
      Dim retVal As Object = method.Invoke(p, Nothing) 
      If Not retVal Is Nothing Then
      End If 
   End Sub 
End Module 
' The example displays the following output: 
'       Samuel

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

© 2014 Microsoft