Assembly.CreateInstance Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyhledá typ z tohoto sestavení a vytvoří jeho instanci pomocí aktivátoru systému.
Přetížení
| 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ří jeho instanci pomocí aktivátoru systému s volitelným vyhledáváním rozlišující malá a velká písmena. |
| 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 má zadanou jazykovou verzi, argumenty a vazby a aktivační atributy. |
CreateInstance(String)
- 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);
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
Parametry
Návraty
Instance zadaného typu vytvořené pomocí konstruktoru bez parametrů; nebo null pokud typeName nebyl nalezen. Typ se vyřeší pomocí výchozího pořadače, bez zadání atributů jazykové verze nebo aktivace a s nastaveným BindingFlags na Public nebo Instance.
Implementuje
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 jen pro reflexi.
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 nebylo možné ho načíst.
-nebo-
Aktuální sestavení bylo načteno do kontextu pouze pro reflexi 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) k 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 velikost písmen se neshoduje s velikostí písmen vlastnosti type Type.FullName . Pro porovnání s úplným
typeNamenázvem typu nerozlišují malá a velká písmena, zavolejte CreateInstance(String, Boolean) přetížení a jakoignoreCaseargument zadejtetrue.Typ v aktuální Assembly instanci neexistuje.
Platí pro
CreateInstance(String, Boolean)
- 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 rozlišující malá a velká písmena.
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
Parametry
- ignoreCase
- Boolean
trueignorovat velikost písmen názvu typu; v opačném případě . false
Návraty
Instance zadaného typu vytvořené pomocí konstruktoru bez parametrů; nebo null pokud typeName nebyl nalezen. Typ se vyřeší pomocí výchozího pořadače, bez zadání atributů jazykové verze nebo aktivace a s nastaveným BindingFlags na Public nebo Instance.
Implementuje
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 jen pro reflexi.
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 nebylo možné ho načíst.
-nebo-
Aktuální sestavení bylo načteno do kontextu pouze pro reflexi 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 zavolá metodu CreateInstance(String) k vytvoření instance argumentu, ale vzhledem k tomu, že velikostí a malých částí typeName argumentu se neshoduje s vlastností typu FullName , vrátí nullmetoda hodnotu . Když příklad předá stejný řetězec přetížení CreateInstance(String, Boolean) a určuje, že porovnání by nemělo rozlišovat malá a velká písmena, Person třída je nalezena a Person objekt je úspěšně vytvořena 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
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 má zadanou jazykovou verzi, argumenty a vazby a aktivační atributy.
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
Parametry
- 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 provádí hledání. Hodnota je kombinace bitových příznaků z BindingFlags.
- binder
- Binder
Objekt, který umožňuje vazbu, vynucování typů argumentů, vyvolání členů a načtení MemberInfo objektů prostřednictvím reflexe. Pokud binder je 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ý má být vyvolán. Pokud je konstruktor bez parametrů požadovaný, args musí být prázdné pole nebo null.
- culture
- CultureInfo
Instance CultureInfo slouží k řízení převodu typů. Pokud je nullto , použije se CultureInfo pro aktuální vlákno . (To je nezbytné k převodu řetězce, který představuje hodnotu 1000 Double , například proto, že hodnota 1000 je reprezentována různými jazykovými verzemi.)
- activationAttributes
- Object[]
Pole jednoho nebo několika atributů, které se mohou podílet na aktivaci. 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
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 jen pro reflexi.
typeName je null.
Nebyl nalezen žádný odpovídající konstruktor.
Neprázdné pole atributů aktivace je předáno 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 nebylo možné ho načíst.
-nebo-
Aktuální sestavení bylo načteno do kontextu pouze pro reflexi 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.