Sdílet prostřednictvím


Assembly.CreateInstance Metoda

Definice

Vyhledá typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému.

Přetížení

Name Description
CreateInstance(String)

Vyhledá zadaný typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému pomocí vyhledávání s rozlišováním velkých a malých písmen.

CreateInstance(String, Boolean)

Vyhledá zadaný typ z tohoto sestavení a vytvoří instanci pomocí aktivátoru systému s volitelným vyhledáváním s rozlišováním velkých a malých písmen.

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

Vyhledá zadaný typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému, s volitelným vyhledáváním s rozlišováním velkých a malých písmen a se zadanými jazykovými verzemi, argumenty a atributy vazby a aktivace.

CreateInstance(String)

Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs

Vyhledá zadaný typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému pomocí vyhledávání s rozlišováním velkých a malých písmen.

public:
 System::Object ^ CreateInstance(System::String ^ typeName);
public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName);
public object CreateInstance(string typeName);
public object? CreateInstance(string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string -> obj
member this.CreateInstance : string -> obj
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

Parametry

typeName
String

Typ FullName , který chcete vyhledat.

Návraty

Instance zadaného typu vytvořeného pomocí konstruktoru bez parametrů; nebo null pokud typeName nebyl nalezen. Typ je vyřešen pomocí výchozího pořadače, bez určení jazykové verze nebo aktivační atributy a s nastavenou BindingFlags hodnotou Public nebo Instance.

Implementuje

Atributy

Výjimky

typeName je prázdný řetězec ("") nebo řetězec začínající znakem null.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe.

typeName je null.

Nebyl nalezen žádný odpovídající konstruktor.

typeName vyžaduje závislé sestavení, které nebylo nalezeno.

typeName vyžaduje závislé sestavení, které bylo nalezeno, ale nelze načíst.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe a typeName vyžaduje závislé sestavení, které nebylo předem načteno.

typeName vyžaduje závislé sestavení, ale soubor není platným sestavením pro aktuálně načtený modul runtime.

Příklady

Následující příklad definuje Person třídu a volá metodu CreateInstance(String) pro vytvoření instance.

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'

Poznámky

Pokud modul runtime nemůže najít typeName v Assembly instanci, vrátí null místo vyvolání výjimky. K tomu může dojít z následujících důvodů:

  • Nezadali jste plně kvalifikovaný název typu.

  • Zadali jste plně kvalifikovaný název typu, ale jeho případ neodpovídá případu vlastnosti typu Type.FullName . Pro porovnání typeName bez rozlišování velkých a velkých písmen s úplným názvem typu zavolejte CreateInstance(String, Boolean) přetížení a zadejte true argument ignoreCase .

  • Typ v aktuální Assembly instanci neexistuje.

Platí pro

CreateInstance(String, Boolean)

Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs

Vyhledá zadaný typ z tohoto sestavení a vytvoří instanci pomocí aktivátoru systému s volitelným vyhledáváním s rozlišováním velkých a malých písmen.

public:
 System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName, bool ignoreCase);
public object CreateInstance(string typeName, bool ignoreCase);
public object? CreateInstance(string typeName, bool ignoreCase);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string * bool -> obj
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

Parametry

typeName
String

Typ FullName , který chcete vyhledat.

ignoreCase
Boolean

trueignorovat velikost písmen názvu typu; v opačném případě . false

Návraty

Instance zadaného typu vytvořeného pomocí konstruktoru bez parametrů; nebo null pokud typeName nebyl nalezen. Typ je vyřešen pomocí výchozího pořadače, bez určení jazykové verze nebo aktivační atributy a s nastavenou BindingFlags hodnotou Public nebo Instance.

Implementuje

Atributy

Výjimky

typeName je prázdný řetězec ("") nebo řetězec začínající znakem null.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe.

Nebyl nalezen žádný odpovídající konstruktor.

typeName je null.

typeName vyžaduje závislé sestavení, které nebylo nalezeno.

typeName vyžaduje závislé sestavení, které bylo nalezeno, ale nelze načíst.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe a typeName vyžaduje závislé sestavení, které nebylo předem načteno.

typeName vyžaduje závislé sestavení, ale soubor není platným sestavením pro aktuálně načtený modul runtime.

Příklady

Následující příklad definuje Person třídu. Potom volá metodu CreateInstance(String) pro vytvoření instance, ale protože velikost velikostí argumentu neodpovídá instanci typeName vlastnosti typu FullName , vrátí nullmetoda . Když příklad předá stejný řetězec přetížení CreateInstance(String, Boolean) a určuje, že porovnání by mělo být nerozlišující velká a malá písmena, Person třída se najde a Person objekt se úspěšně vytvoří instance.

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'

Poznámky

Pokud modul runtime nemůže najít typeName v Assembly instanci, vrátí null místo vyvolání výjimky. K tomu může dojít z následujících důvodů:

  • Nezadali jste plně kvalifikovaný název typu.

  • Typ v aktuální Assembly instanci neexistuje.

Platí pro

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

Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs
Zdroj:
Assembly.cs

Vyhledá zadaný typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému, s volitelným vyhledáváním s rozlišováním velkých a malých písmen a se zadanými jazykovými verzemi, argumenty a atributy vazby a aktivace.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
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 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
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
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

Parametry

typeName
String

Typ FullName , který chcete vyhledat.

ignoreCase
Boolean

trueignorovat velikost písmen názvu typu; v opačném případě . false

bindingAttr
BindingFlags

Bitová maska, která ovlivňuje způsob, jakým se vyhledávání provádí. Hodnota je kombinací bitových příznaků z BindingFlags.

binder
Binder

Objekt, který umožňuje vazbu, převod typů argumentů, vyvolání členů a načtení MemberInfo objektů prostřednictvím reflexe. Pokud binder ano null, použije se výchozí pořadač.

args
Object[]

Pole obsahující argumenty, které mají být předány konstruktoru. Toto pole argumentů se musí shodovat s číslem, pořadím a typem parametrů konstruktoru, který se má vyvolat. Je-li žádoucí konstruktor bez parametrů, args musí být prázdné pole nebo null.

culture
CultureInfo

Instance CultureInfo sloužící k řízení převodu typů. V takovém případě nullCultureInfo se použije aktuální vlákno. (To je nezbytné k převodu řetězce, který představuje 1000 na Double hodnotu, například protože 1000 je reprezentován odlišně různými jazykovými verzemi.)

activationAttributes
Object[]

Pole jednoho nebo více atributů, které se mohou účastnit aktivace. Obvykle pole obsahující jeden UrlAttribute objekt, který určuje adresu URL, která je nutná k aktivaci vzdáleného objektu. Tento parametr souvisí s objekty aktivovanými klientem. Aktivace klienta je starší technologie, která se zachovává kvůli zpětné kompatibilitě, ale nedoporučuje se pro nový vývoj. Distribuované aplikace by místo toho měly používat Windows Communication Foundation.

Návraty

Instance zadaného typu nebo null pokud typeName nebyla nalezena. Zadané argumenty slouží k překladu typu a k vytvoření vazby konstruktoru, který se používá k vytvoření instance.

Implementuje

Atributy

Výjimky

typeName je prázdný řetězec ("") nebo řetězec začínající znakem null.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe.

typeName je null.

Nebyl nalezen žádný odpovídající konstruktor.

Pole neprázdných aktivačních atributů je předáno do typu, který nedědí z MarshalByRefObject.

typeName vyžaduje závislé sestavení, které nebylo nalezeno.

typeName vyžaduje závislé sestavení, které bylo nalezeno, ale nelze načíst.

nebo

Aktuální sestavení bylo načteno do kontextu pouze reflexe a typeName vyžaduje závislé sestavení, které nebylo předem načteno.

typeName vyžaduje závislé sestavení, ale soubor není platným sestavením pro aktuálně načtený modul runtime.

Platí pro