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
typeName
názvem typu nerozlišují malá a velká písmena, zavolejte CreateInstance(String, Boolean) přetížení a jakoignoreCase
argument 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
true
ignorovat 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í null
metoda 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
true
ignorovat 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 null
to , 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.