Assembly.CreateInstance Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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écifieztrue
pour l’argumentignoreCase
.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
- 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
- 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é.