Assembly.CreateInstance Methode

Definitie

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

typeName
String

Het FullName type dat moet worden gevonden.

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 typeName het type roept u de CreateInstance(String, Boolean) overbelasting aan en geeft u true dit op voor het ignoreCase argument.

  • 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

typeName
String

Het FullName type dat moet worden gevonden.

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

typeName
String

Het FullName type dat moet worden gevonden.

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.

Van toepassing op