Assembly.CreateInstance Metodo

Definizione

Individua un tipo in questo assembly e ne crea un'istanza usando l'attivatore di sistema.Locates a type from this assembly and creates an instance of it using the system activator.

Overload

CreateInstance(String)

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione tra maiuscole e minuscole.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

CreateInstance(String, Boolean)

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema, consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole e usando le impostazioni cultura, gli argomenti e gli attributi di attivazione e di binding specificati.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

CreateInstance(String)

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione tra maiuscole e minuscole.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance (string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

Parametri

typeName
String

FullName del tipo da individuare.The FullName of the type to locate.

Restituisce

Istanza del tipo specificato creata con il costruttore senza parametri oppure null se typeName non viene trovato.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. Il tipo viene risolto usando il binder predefinito, senza specificare attributi delle impostazioni cultura o dell'attivazione e con BindingFlags impostato su Public o Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementazioni

Eccezioni

typeName è una stringa vuota ("") o una stringa che inizia con un carattere Null.typeName is an empty string ("") or a string beginning with a null character.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection.The current assembly was loaded into the reflection-only context.

typeName è null.typeName is null.

Non è stato trovato alcun costruttore corrispondente.No matching constructor was found.

typeName richiede un assembly dipendente che non è stato trovato.typeName requires a dependent assembly that could not be found.

typeName richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.typeName requires a dependent assembly that was found but could not be loaded.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection e typeName richiede un assembly dipendente che non è stato precaricato.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName richiede un assembly dipendente, ma il file non è un assembly valido.typeName requires a dependent assembly, but the file is not a valid assembly.

-oppure--or- typeName richiede un assembly dipendente che è stato compilato per una versione del runtime successiva a quella attualmente caricata.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Esempi

Nell'esempio seguente viene definita una classe Person e viene chiamato il metodo CreateInstance(String) per crearne un'istanza.The following example defines a Person class and calls the CreateInstance(String) method to instantiate it.

using System;
using System.Reflection;
using Contoso.Libraries;

namespace Contoso.Libraries
{
   public class Person
   {
      private string _name;
   
      public Person()
      { }
   
      public Person(string name)
      {
         this._name = name;
      }
   
      public string Name
      { get { return this._name; }
        set { this._name = value; } }
   
      public override string ToString()
      {
         return this._name;
      }
   }
}

public class Example
{
   public static void Main()
   {
      Assembly assem = typeof(Person).Assembly;
      Person p = (Person) assem.CreateInstance("Contoso.Libraries.Person");
      if (! (p == null)) {
         p.Name = "John";
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p);
      }
      else {
         Console.WriteLine("Unable to instantiate a Person object.");
      }   
   }
}
// The example displays the following output:
//        Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries

Namespace Contoso.Libraries
   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 
         Get 
            Return Me._name
         End Get 
         Set 
            Me._name = value
         End Set 
      End Property 
   
      Public Overrides Function ToString() As String 
         Return Me._name
      End Function 
   End Class
End Namespace 

Module Example
   Public Sub Main()
      Dim assem As Assembly = GetType(Person).Assembly
      Dim p As Person = CType(assem.CreateInstance("Contoso.Libraries.Person"),
                              Person)
      If p IsNot Nothing Then
         p.Name = "John"
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p)
      Else
         Console.WriteLine("Unable to instantiate a Person object.")
      End If   
   End Sub
End Module
' The example displays the following output:
'       Instantiated a Person object whose value is 'John'

Commenti

Se il runtime non è in grado di trovare typeName nell'istanza Assembly, restituisce null anziché generare un'eccezione.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Questo problema può verificarsi perché:This might happen because:

  • Non è stato specificato il nome completo del tipo.You haven't specified the fully qualified name of the type.

  • È stato specificato il nome completo del tipo, ma il case non corrisponde al caso della proprietà Type.FullName del tipo.You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. Per un confronto senza distinzione tra maiuscole e minuscole di typeName con il nome completo del tipo, chiamare l'overload CreateInstance(String, Boolean) e specificare true per l'argomento ignoreCase.For a case-insensitive comparison of typeName with the type's full name, call the CreateInstance(String, Boolean) overload and specify true for the ignoreCase argument.

  • Il tipo non esiste nell'istanza di Assembly corrente.The type doesn't exist in the current Assembly instance.

Sicurezza

ReflectionPermission
Quando viene richiamato ad associazione tardiva tramite meccanismi come InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumerazione associata: MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean)

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
abstract member CreateInstance : string * bool -> obj
override this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object

Parametri

typeName
String

FullName del tipo da individuare.The FullName of the type to locate.

ignoreCase
Boolean

true per ignorare la distinzione tra maiuscole e minuscole nel nome del tipo; in caso contrario, false.true to ignore the case of the type name; otherwise, false.

Restituisce

Istanza del tipo specificato creata con il costruttore senza parametri oppure null se typeName non viene trovato.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. Il tipo viene risolto usando il binder predefinito, senza specificare attributi delle impostazioni cultura o dell'attivazione e con BindingFlags impostato su Public o Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementazioni

Eccezioni

typeName è una stringa vuota ("") o una stringa che inizia con un carattere Null.typeName is an empty string ("") or a string beginning with a null character.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection.The current assembly was loaded into the reflection-only context.

Non è stato trovato alcun costruttore corrispondente.No matching constructor was found.

typeName è null.typeName is null.

typeName richiede un assembly dipendente che non è stato trovato.typeName requires a dependent assembly that could not be found.

typeName richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.typeName requires a dependent assembly that was found but could not be loaded.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection e typeName richiede un assembly dipendente che non è stato precaricato.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName richiede un assembly dipendente, ma il file non è un assembly valido.typeName requires a dependent assembly, but the file is not a valid assembly.

-oppure--or- typeName richiede un assembly dipendente che è stato compilato per una versione del runtime successiva a quella attualmente caricata.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Esempi

Nell'esempio seguente viene definita una classe Person.The following example defines a Person class. Chiama quindi il metodo CreateInstance(String) per crearne un'istanza, ma poiché la combinazione di maiuscole e minuscole dell'argomento typeName non corrisponde a quella della proprietà FullName del tipo, il metodo restituisce null.It then calls the CreateInstance(String) method to instantiate it, but because the casing of the typeName argument doesn't match that of the type's FullName property, the method returns null. Quando l'esempio passa la stessa stringa all'overload CreateInstance(String, Boolean) e specifica che il confronto deve essere senza distinzione tra maiuscole e minuscole, viene trovata la classe Person e viene creata un'istanza di un oggetto Person.When the example passes the same string to the CreateInstance(String, Boolean) overload and specifies that the comparison should be case-insensitive, the Person class is found, and a Person object is successfully instantiated.

using System;
using System.Reflection;
using Contoso.Libraries;

namespace Contoso.Libraries
{
   public class Person
   {
      private string _name;
   
      public Person()
      { }
   
      public Person(string name)
      {
         this._name = name;
      }
   
      public string Name
      { get { return this._name; }
        set { this._name = value; } }
   
      public override string ToString()
      {
         return this._name;
      }
   }
}

public class Example
{
   public static void Main()
   {
      String fullName = "contoso.libraries.person";
      Assembly assem = typeof(Person).Assembly;
      Person p = (Person) assem.CreateInstance(fullName);
      if (! (p == null)) {
         p.Name = "John";
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p);
      }
      else {
         Console.WriteLine("Unable to instantiate a Person object " +
                           "with Assembly.CreateInstance(String)");
         // Try case-insensitive type name comparison.
         p = (Person) assem.CreateInstance(fullName, true);
         if (! (p == null)) {
            p.Name = "John";
            Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                              p.GetType().Name, p);
         }
         else {
            Console.WriteLine("Unable to instantiate a {0} object.", 
                              fullName);
         }   
      }   
   }
}
// The example displays the following output:
//    Unable to instantiate a Person object with Assembly.CreateInstance(String)
//    Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries

Namespace Contoso.Libraries
   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 
         Get 
            Return Me._name
         End Get 
         Set 
            Me._name = value
         End Set 
      End Property 
   
      Public Overrides Function ToString() As String 
         Return Me._name
      End Function 
   End Class
End Namespace 

Module Example
   Public Sub Main()
      Dim fullName As String = "contoso.libraries.person"
      Dim assem As Assembly = GetType(Person).Assembly
      Dim p As Person = CType(assem.CreateInstance(fullName),
                              Person)
      If p IsNot Nothing Then
         p.Name = "John"
         Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                           p.GetType().Name, p)
      Else
         Console.WriteLine("Unable to instantiate a Person object" +
                           "with Assembly.CreateInstance(String)")
         ' Try case-insensitive type name comparison.
         p = CType(assem.CreateInstance(fullName, true), Person)
         If p IsNot Nothing Then 
            p.Name = "John"
            Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
                              p.GetType().Name, p)
         Else 
            Console.WriteLine("Unable to instantiate a {0} object.", 
                              fullName)
         End If   
      End If   
   End Sub
End Module
' The example displays the following output:
'    Unable to instantiate a Person object with Assembly.CreateInstance(String)
'    Instantiated a Person object whose value is 'John'

Commenti

Se il runtime non è in grado di trovare typeName nell'istanza Assembly, restituisce null anziché generare un'eccezione.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Questo problema può verificarsi perché:This might happen because:

  • Non è stato specificato il nome completo del tipo.You haven't specified the fully qualified name of the type.

  • Il tipo non esiste nell'istanza di Assembly corrente.The type doesn't exist in the current Assembly instance.

Sicurezza

ReflectionPermission
Quando viene richiamato ad associazione tardiva tramite meccanismi come InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumerazione associata: MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema, consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole e usando le impostazioni cultura, gli argomenti e gli attributi di attivazione e di binding specificati.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
abstract member CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
override this.CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj

Parametri

typeName
String

FullName del tipo da individuare.The FullName of the type to locate.

ignoreCase
Boolean

true per ignorare la distinzione tra maiuscole e minuscole nel nome del tipo; in caso contrario, false.true to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags

Maschera di bit che influenza le modalità di esecuzione della ricerca.A bitmask that affects the way in which the search is conducted. Il valore è una combinazione di flag di bit dell'oggetto BindingFlags.The value is a combination of bit flags from BindingFlags.

binder
Binder

Oggetto che consente il binding, la coercizione dei tipi di argomento, la chiamata dei membri e il recupero di oggetti MemberInfo tramite reflection.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Se binder è null, verrà usato il binder predefinito.If binder is null, the default binder is used.

args
Object[]

Matrice contenente gli argomenti da passare al costruttore.An array that contains the arguments to be passed to the constructor. La matrice di argomenti deve corrispondere ai parametri del costruttore da richiamare in quanto a numero, ordine e tipo.This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. Per usare il costruttore senza parametri, args deve essere una matrice vuota o null.If the parameterless constructor is desired, args must be an empty array or null.

culture
CultureInfo

Istanza di CultureInfo usata per regolare la coercizione dei tipi.An instance of CultureInfo used to govern the coercion of types. Se è null, per il thread corrente verrà usato l'oggetto CultureInfo.If this is null, the CultureInfo for the current thread is used. Si tratta di un parametro necessario per convertire un oggetto String che rappresenta, ad esempio, il numero 1000 in un valore Double, dal momento che questo numero è rappresentato in modo diverso nelle varie impostazioni cultura.(This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione.An array of one or more attributes that can participate in activation. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. Il parametro è correlato agli oggetti attivati dal client.This parameter is related to client-activated objects. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Restituisce

Istanza del tipo specificato o null se typeName non viene trovato.An instance of the specified type, or null if typeName is not found. Gli argomenti forniti vengono usati per risolvere il tipo e per associare il costruttore usato per creare l'istanza.The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

Implementazioni

Eccezioni

typeName è una stringa vuota ("") o una stringa che inizia con un carattere Null.typeName is an empty string ("") or a string beginning with a null character.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection.The current assembly was loaded into the reflection-only context.

typeName è null.typeName is null.

Non è stato trovato alcun costruttore corrispondente.No matching constructor was found.

Una matrice di attributi di attivazione non vuota viene passata a un tipo che non eredita da MarshalByRefObject.A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

typeName richiede un assembly dipendente che non è stato trovato.typeName requires a dependent assembly that could not be found.

typeName richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.typeName requires a dependent assembly that was found but could not be loaded.

-oppure--or- L'assembly corrente è stato caricato nel contesto di sola reflection e typeName richiede un assembly dipendente che non è stato precaricato.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName richiede un assembly dipendente, ma il file non è un assembly valido.typeName requires a dependent assembly, but the file is not a valid assembly.

-oppure--or- typeName richiede un assembly dipendente che è stato compilato per una versione del runtime successiva a quella attualmente caricata.typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

Sicurezza

ReflectionPermission
Quando viene richiamato ad associazione tardiva tramite meccanismi come InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumerazione associata: MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
per creare un'istanza di un delegato.to create an instance of a delegate. Enumerazione associata: UnmanagedCodeAssociated enumeration: UnmanagedCode

Si applica a