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í
| 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
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í
typeNamebez rozlišování velkých a velkých písmen s úplným názvem typu zavolejte CreateInstance(String, Boolean) přetížení a zadejtetrueargumentignoreCase.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
- 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
- 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.