Assembly.CreateInstance Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een type van deze assembly gevonden en wordt er een exemplaar van gemaakt met behulp van de systeemactivator.
Overloads
| Name | Description |
|---|---|
| CreateInstance(String) |
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met behulp van hoofdlettergevoelige zoekopdrachten. |
| CreateInstance(String, Boolean) |
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met optionele hoofdlettergevoelige zoekopdracht. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met optionele hoofdlettergevoelige zoekfunctie en met de opgegeven cultuur, argumenten en bindings- en activeringskenmerken. |
CreateInstance(String)
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met behulp van hoofdlettergevoelige zoekopdrachten.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance(string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
member this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object
Parameters
Retouren
Een exemplaar van het opgegeven type dat is gemaakt met de parameterloze constructor; of null als typeName deze niet wordt gevonden. Het type wordt opgelost met behulp van de standaard binder, zonder cultuur- of activeringskenmerken op te geven en met BindingFlags ingesteld op Public of Instance.
Implementeringen
Uitzonderingen
typeName is een lege tekenreeks ("") of een tekenreeks die begint met een null-teken.
– of –
De huidige assembly is in de context alleen weerspiegeling geladen.
typeName is null.
Er is geen overeenkomende constructor gevonden.
typeName vereist een afhankelijke assembly die niet kan worden gevonden.
typeName vereist een afhankelijke assembly die is gevonden, maar niet kan worden geladen.
– of –
De huidige assembly is geladen in de context alleen voor weerspiegeling en typeName vereist een afhankelijke assembly die niet vooraf is geladen.
typeName vereist een afhankelijke assembly, maar het bestand is geen geldige assembly voor de momenteel geladen runtime.
Voorbeelden
In het volgende voorbeeld wordt een Person klasse gedefinieerd en wordt de CreateInstance(String) methode aangeroepen om deze te instantiëren.
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'
Opmerkingen
Als de runtime niet kan worden gevonden typeName in het Assembly exemplaar, wordt deze geretourneerd null in plaats van een uitzondering te genereren. Dit kan gebeuren omdat:
U hebt de volledig gekwalificeerde naam van het type niet opgegeven.
U hebt de volledig gekwalificeerde typenaam opgegeven, maar het hoofdlettergebruik komt niet overeen met het hoofdlettergebruik van de eigenschap van het type Type.FullName . Voor een niet-hoofdlettergevoelige vergelijking van de volledige naam van
typeNamehet type roept u de CreateInstance(String, Boolean) overbelasting aan en geeft utruedit op voor hetignoreCaseargument.Het type bestaat niet in het huidige Assembly exemplaar.
Van toepassing op
CreateInstance(String, Boolean)
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met optionele hoofdlettergevoelige zoekopdracht.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
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
member this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object
Parameters
- ignoreCase
- Boolean
true om het geval van de typenaam te negeren; anders, false.
Retouren
Een exemplaar van het opgegeven type dat is gemaakt met de parameterloze constructor; of null als typeName deze niet wordt gevonden. Het type wordt opgelost met behulp van de standaard binder, zonder cultuur- of activeringskenmerken op te geven en met BindingFlags ingesteld op Public of Instance.
Implementeringen
Uitzonderingen
typeName is een lege tekenreeks ("") of een tekenreeks die begint met een null-teken.
– of –
De huidige assembly is in de context alleen weerspiegeling geladen.
Er is geen overeenkomende constructor gevonden.
typeName is null.
typeName vereist een afhankelijke assembly die niet kan worden gevonden.
typeName vereist een afhankelijke assembly die is gevonden, maar niet kan worden geladen.
– of –
De huidige assembly is geladen in de context alleen voor weerspiegeling en typeName vereist een afhankelijke assembly die niet vooraf is geladen.
typeName vereist een afhankelijke assembly, maar het bestand is geen geldige assembly voor de momenteel geladen runtime.
Voorbeelden
In het volgende voorbeeld wordt een Person klasse gedefinieerd. Vervolgens wordt de CreateInstance(String) methode aangeroepen om deze te instantiëren, maar omdat de behuizing van het typeName argument niet overeenkomt met die van de eigenschap van het type FullName , retourneert nullde methode . Wanneer in het voorbeeld dezelfde tekenreeks wordt doorgegeven aan de CreateInstance(String, Boolean) overbelasting en wordt aangegeven dat de vergelijking hoofdlettergevoelig moet zijn, wordt de Person klasse gevonden en wordt een Person object geïnstantieerd.
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'
Opmerkingen
Als de runtime niet kan worden gevonden typeName in het Assembly exemplaar, wordt deze geretourneerd null in plaats van een uitzondering te genereren. Dit kan gebeuren omdat:
U hebt de volledig gekwalificeerde naam van het type niet opgegeven.
Het type bestaat niet in het huidige Assembly exemplaar.
Van toepassing op
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Zoekt het opgegeven type van deze assembly en maakt er een exemplaar van met behulp van de systeemactivator, met optionele hoofdlettergevoelige zoekfunctie en met de opgegeven cultuur, argumenten en bindings- en activeringskenmerken.
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);
public virtual 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 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 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
Parameters
- ignoreCase
- Boolean
true om het geval van de typenaam te negeren; anders, false.
- bindingAttr
- BindingFlags
Een bitmasker dat van invloed is op de manier waarop de zoekopdracht wordt uitgevoerd. De waarde is een combinatie van bitvlagmen van BindingFlags.
- binder
- Binder
Een object dat de binding, dwang van argumenttypen, het aanroepen van leden en het ophalen van MemberInfo objecten via reflectie mogelijk maakt. Als binder dat het is null, wordt de standaardbinding gebruikt.
- args
- Object[]
Een matrix die de argumenten bevat die moeten worden doorgegeven aan de constructor. Deze matrix met argumenten moet overeenkomen in getal, volgorde en de parameters van de constructor typen die moeten worden aangeroepen. Als de parameterloze constructor gewenst is, args moet dit een lege matrix of null.
- culture
- CultureInfo
Een exemplaar dat CultureInfo wordt gebruikt om de dwang van typen te bepalen. Als dit het is null, wordt het CultureInfo voor de huidige thread gebruikt. (Dit is nodig om een tekenreeks te converteren die 1000 vertegenwoordigt naar een Double waarde, bijvoorbeeld omdat 1000 verschillend wordt weergegeven door verschillende culturen.)
- activationAttributes
- Object[]
Een matrix van een of meer kenmerken die kunnen deelnemen aan de activering. Normaal gesproken bevat een matrix die één UrlAttribute object bevat dat de URL aangeeft die vereist is om een extern object te activeren. Deze parameter is gerelateerd aan door de client geactiveerde objecten. Clientactivering is een verouderde technologie die behouden blijft voor achterwaartse compatibiliteit, maar wordt niet aanbevolen voor nieuwe ontwikkeling. Gedistribueerde toepassingen moeten in plaats daarvan Windows Communication Foundation gebruiken.
Retouren
Een exemplaar van het opgegeven type of null als typeName deze niet wordt gevonden. De opgegeven argumenten worden gebruikt om het type op te lossen en om de constructor te binden die wordt gebruikt om het exemplaar te maken.
Implementeringen
Uitzonderingen
typeName is een lege tekenreeks ("") of een tekenreeks die begint met een null-teken.
– of –
De huidige assembly is in de context alleen weerspiegeling geladen.
typeName is null.
Er is geen overeenkomende constructor gevonden.
Een niet-lege activeringskenmerkenmatrix wordt doorgegeven aan een type dat niet overkomt van MarshalByRefObject.
typeName vereist een afhankelijke assembly die niet kan worden gevonden.
typeName vereist een afhankelijke assembly die is gevonden, maar niet kan worden geladen.
– of –
De huidige assembly is geladen in de context alleen voor weerspiegeling en typeName vereist een afhankelijke assembly die niet vooraf is geladen.
typeName vereist een afhankelijke assembly, maar het bestand is geen geldige assembly voor de momenteel geladen runtime.