Partager via


Assembly.CreateInstance Méthode

Définition

Recherche un type dans cet assembly et en crée une instance à l'aide de l'activateur système.

Surcharges

CreateInstance(String)

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche respectant la casse.

CreateInstance(String, Boolean)

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche facultative respectant la casse.

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

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche facultative respectant la casse et possédant la culture, les arguments, ainsi que les attributs de liaison et d'activation spécifiés.

CreateInstance(String)

Source:
Assembly.cs
Source:
Assembly.cs
Source:
Assembly.cs

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche respectant la casse.

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

Paramètres

typeName
String

Propriété FullName du type à rechercher.

Retours

Instance du type spécifié créée avec le constructeur sans paramètre, ou null si typeName est introuvable. Le type est résolu à l'aide du binder par défaut, sans spécifier d'attributs de culture ou d'activation, et avec BindingFlags défini sur Public ou Instance.

Implémente

Exceptions

typeName est une chaîne vide ("") ou une chaîne commençant par un caractère null.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly.

typeName a la valeur null.

Aucun constructeur correspondant n’a été trouvé.

typeName requiert un assembly dépendant qui est introuvable.

typeName nécessite un assembly dépendant qui a été trouvé, mais qui n’a pas pu être chargé.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly, et typeName nécessite un assembly dépendant qui n’a pas été préchargé.

typeName nécessite un assembly dépendant, mais le fichier n’est pas un assembly valide pour le runtime actuellement chargé.

Exemples

L’exemple suivant définit une Person classe et appelle la CreateInstance(String) méthode pour l’instancier.

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'

Remarques

Si le runtime ne parvient pas à trouver typeName dans le Assembly instance, il retourne null au lieu de lever une exception. Cela peut se produire pour les raisons suivantes :

  • Vous n’avez pas spécifié le nom complet du type.

  • Vous avez spécifié le nom de type complet, mais sa casse ne correspond pas à la casse de la propriété du Type.FullName type. Pour une comparaison non sensible à la casse de typeName avec le nom complet du type, appelez la CreateInstance(String, Boolean) surcharge et spécifiez true pour l’argument ignoreCase .

  • Le type n’existe pas dans le instance actuel Assembly .

S’applique à

CreateInstance(String, Boolean)

Source:
Assembly.cs
Source:
Assembly.cs
Source:
Assembly.cs

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche facultative respectant la casse.

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

Paramètres

typeName
String

Propriété FullName du type à rechercher.

ignoreCase
Boolean

true pour ignorer la casse du nom de type ; sinon, false.

Retours

Instance du type spécifié créée avec le constructeur sans paramètre, ou null si typeName est introuvable. Le type est résolu à l'aide du binder par défaut, sans spécifier d'attributs de culture ou d'activation, et avec BindingFlags défini sur Public ou Instance.

Implémente

Exceptions

typeName est une chaîne vide ("") ou une chaîne commençant par un caractère null.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly.

Aucun constructeur correspondant n’a été trouvé.

typeName a la valeur null.

typeName requiert un assembly dépendant qui est introuvable.

typeName nécessite un assembly dépendant qui a été trouvé, mais qui n’a pas pu être chargé.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly, et typeName nécessite un assembly dépendant qui n’a pas été préchargé.

typeName nécessite un assembly dépendant, mais le fichier n’est pas un assembly valide pour le runtime actuellement chargé.

Exemples

L’exemple suivant définit une classe Person. Il appelle ensuite la CreateInstance(String) méthode pour l’instancier, mais comme la casse de l’argument typeName ne correspond pas à celle de la propriété du FullName type, la méthode retourne null. Lorsque l’exemple passe la même chaîne à la CreateInstance(String, Boolean) surcharge et spécifie que la comparaison ne respecte pas la casse, la Person classe est trouvée et un Person objet est instancié avec succès.

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'

Remarques

Si le runtime ne parvient pas à trouver typeName dans le Assembly instance, il retourne null au lieu de lever une exception. Cela peut se produire pour les raisons suivantes :

  • Vous n’avez pas spécifié le nom complet du type.

  • Le type n’existe pas dans le instance actuel Assembly .

S’applique à

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

Source:
Assembly.cs
Source:
Assembly.cs
Source:
Assembly.cs

Recherche le type spécifié dans cet assembly et en crée une instance à l'aide de l'activateur système, avec une recherche facultative respectant la casse et possédant la culture, les arguments, ainsi que les attributs de liaison et d'activation spécifiés.

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 virtual object? CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object[]? args, System.Globalization.CultureInfo? culture, object[]? activationAttributes);
public virtual object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, 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
Public Overridable Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Public Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object

Paramètres

typeName
String

Propriété FullName du type à rechercher.

ignoreCase
Boolean

true pour ignorer la casse du nom de type ; sinon, false.

bindingAttr
BindingFlags

Masque de bits qui affecte la manière dont la recherche est effectuée. La valeur est une combinaison de bits indicateurs de BindingFlags.

binder
Binder

Objet qui active la liaison, la contrainte de types d'arguments, l'appel des membres et la récupération d'objets MemberInfo par le biais de la réflexion. Si binder est null, le binder par défaut est utilisé.

args
Object[]

Tableau qui contient les arguments à passer au constructeur. Ce tableau d'arguments doit posséder les mêmes nombres, ordre et type que les paramètres du constructeur à appeler. Si vous souhaitez utiliser le constructeur sans paramètre, args doit être un tableau vide ou null.

culture
CultureInfo

Instance de CultureInfo utilisée pour régir la contrainte des types. Si la valeur est null, le CultureInfo du thread actuel est utilisé. (Par exemple, ceci est nécessaire pour convertir une chaîne représentant 1 000 en une valeur Double, car 1 000 est représenté de différentes manières selon la culture.)

activationAttributes
Object[]

Tableau à un ou plusieurs attributs pouvant participer à l'activation. En général, tableau contenant un seul objet UrlAttribute qui spécifie l'URL nécessaire pour activer un objet distant. Ce paramètre est lié aux objets activés par le client. L'activation des clients est une technologie héritée qui est conservée pour la compatibilité descendante, mais elle n'est pas recommandée pour un nouveau développement. Les applications distribuées doivent à la place utiliser Windows Communication Foundation.

Retours

Une instance du type spécifié ou null si typeName est introuvable. Les arguments fournis sont utilisés pour résoudre le type, et lier le constructeur utilisé pour créer l'instance.

Implémente

Exceptions

typeName est une chaîne vide ("") ou une chaîne commençant par un caractère null.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly.

typeName a la valeur null.

Aucun constructeur correspondant n’a été trouvé.

Un tableau d’attributs d’activation non vides est passé à un type qui n’hérite pas de MarshalByRefObject.

typeName requiert un assembly dépendant qui est introuvable.

typeName nécessite un assembly dépendant qui a été trouvé, mais qui n’a pas pu être chargé.

- ou -

L’assembly actuel a été chargé dans le contexte ReflectionOnly, et typeName nécessite un assembly dépendant qui n’a pas été préchargé.

typeName nécessite un assembly dépendant, mais le fichier n’est pas un assembly valide pour le runtime actuellement chargé.

S’applique à