Assembly.CreateInstance Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Megkeres egy típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával.
Túlterhelések
| Name | Description |
|---|---|
| CreateInstance(String) |
Megkeresi a megadott típust ebből a szerelvényből, és létrehoz egy példányt a rendszeraktivátor használatával, a kis- és nagybetűket megkülönböztető kereséssel. |
| CreateInstance(String, Boolean) |
Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűket nem kötelező kereséssel. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűk megkülönböztetésével, valamint a megadott kultúrával, argumentumokkal, kötési és aktiválási attribútumokkal. |
CreateInstance(String)
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
Megkeresi a megadott típust ebből a szerelvényből, és létrehoz egy példányt a rendszeraktivátor használatával, a kis- és nagybetűket megkülönböztető kereséssel.
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
Paraméterek
Válaszok
A megadott típus egy példánya, amely a paraméter nélküli konstruktorral jön létre; vagy null ha typeName nem található. A típus feloldása az alapértelmezett kötőanyag használatával történik, a kulturális vagy aktiválási attribútumok megadása nélkül, valamint a következő beállítással BindingFlagsPublic : vagy Instance.
Megvalósítás
- Attribútumok
Kivételek
typeName üres karakterlánc ("") vagy null karakterrel kezdődő karakterlánc.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükröződési környezetbe.
typeName az null.
Nem található egyező konstruktor.
typeName olyan függő szerelvényt igényel, amely nem található.
typeName olyan függő szerelvényt igényel, amely megtalálható, de nem tölthető be.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükrözési környezetbe, és typeName olyan függő szerelvényt igényel, amely nem lett előre betöltve.
typeName függő szerelvényt igényel, de a fájl nem érvényes szerelvény az aktuálisan betöltött futtatókörnyezethez.
Példák
Az alábbi példa egy osztályt Person határoz meg, és meghívja a metódust a CreateInstance(String) példányosításra.
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'
Megjegyzések
Ha a futtatókörnyezet nem található typeName a Assembly példányban, a kivétel kivetése helyett ad vissza null . Ez a következő esetekben fordulhat elő:
Nem adta meg a típus teljes nevét.
Megadta a teljes típusnevet, de az esete nem egyezik a típus tulajdonságának esetével Type.FullName . A típus teljes nevével való kis- és nagybetűk megkülönböztetése
typeNameesetén hívja meg a CreateInstance(String, Boolean) túlterhelést, és adja megtrueazignoreCaseargumentumot.A típus nem létezik az aktuális Assembly példányban.
A következőre érvényes:
CreateInstance(String, Boolean)
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűket nem kötelező kereséssel.
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
Paraméterek
- ignoreCase
- Boolean
truea típusnév esetének figyelmen kívül hagyása; egyéb esetben. false
Válaszok
A megadott típus egy példánya, amely a paraméter nélküli konstruktorral jön létre; vagy null ha typeName nem található. A típus feloldása az alapértelmezett kötőanyag használatával történik, a kulturális vagy aktiválási attribútumok megadása nélkül, valamint a következő beállítással BindingFlagsPublic : vagy Instance.
Megvalósítás
- Attribútumok
Kivételek
typeName üres karakterlánc ("") vagy null karakterrel kezdődő karakterlánc.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükröződési környezetbe.
Nem található egyező konstruktor.
typeName az null.
typeName olyan függő szerelvényt igényel, amely nem található.
typeName olyan függő szerelvényt igényel, amely megtalálható, de nem tölthető be.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükrözési környezetbe, és typeName olyan függő szerelvényt igényel, amely nem lett előre betöltve.
typeName függő szerelvényt igényel, de a fájl nem érvényes szerelvény az aktuálisan betöltött futtatókörnyezethez.
Példák
Az alábbi példa egy osztályt Person határoz meg. Ezután meghívja a metódust a CreateInstance(String) példányosításra, de mivel az typeName argumentum burkolata nem egyezik meg a típus FullName tulajdonságával, a metódus ad vissza null. Ha a példa ugyanazt a sztringet továbbítja a CreateInstance(String, Boolean) túlterhelésnek, és meghatározza, hogy az összehasonlításnak kis- és nagybetűknek kell lennie, az Person osztály megtalálható, és egy Person objektum példányosítása sikeresen megtörtént.
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'
Megjegyzések
Ha a futtatókörnyezet nem található typeName a Assembly példányban, a kivétel kivetése helyett ad vissza null . Ez a következő esetekben fordulhat elő:
Nem adta meg a típus teljes nevét.
A típus nem létezik az aktuális Assembly példányban.
A következőre érvényes:
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
- Forrás:
- Assembly.cs
Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűk megkülönböztetésével, valamint a megadott kultúrával, argumentumokkal, kötési és aktiválási attribútumokkal.
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
Paraméterek
- ignoreCase
- Boolean
truea típusnév esetének figyelmen kívül hagyása; egyéb esetben. false
- bindingAttr
- BindingFlags
Bitmaszk, amely befolyásolja a keresés menetét. Az érték a bitjelölők BindingFlagskombinációja.
- binder
- Binder
Olyan objektum, amely lehetővé teszi az argumentumtípusok kötését, kényszerítését, a tagok meghívását és az objektumok tükröződésen keresztüli lekérését MemberInfo . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
A konstruktornak átadott argumentumokat tartalmazó tömb. Ennek az argumentumtömbnek számban, sorrendben kell egyeznie, és be kell gépelnie a meghívandó konstruktor paramétereit. Ha a paraméter nélküli konstruktor kívánt, args üres tömbnek vagy null.
- culture
- CultureInfo
A típusok kényszerítésének szabályozására használt példány CultureInfo . Ebben az esetben nulla rendszer az CultureInfo aktuális szálat használja. (Ez az 1000 értéket képviselő sztring értékké Double alakításához szükséges, például mivel az 1000-et különböző kultúrák képviselik.)
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Általában egy olyan tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektum aktiválásához szükséges URL-címet. Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
A megadott típusú példány, vagy null ha typeName nem található. A megadott argumentumok a típus feloldására és a példány létrehozásához használt konstruktor kötésére szolgálnak.
Megvalósítás
- Attribútumok
Kivételek
typeName üres karakterlánc ("") vagy null karakterrel kezdődő karakterlánc.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükröződési környezetbe.
typeName az null.
Nem található egyező konstruktor.
A nem üres aktiválási attribútumok tömbje olyan típusnak lesz átadva, amelytől nem örököl MarshalByRefObject.
typeName olyan függő szerelvényt igényel, amely nem található.
typeName olyan függő szerelvényt igényel, amely megtalálható, de nem tölthető be.
-vagy-
Az aktuális szerelvény be lett töltve a csak tükrözési környezetbe, és typeName olyan függő szerelvényt igényel, amely nem lett előre betöltve.
typeName függő szerelvényt igényel, de a fájl nem érvényes szerelvény az aktuálisan betöltött futtatókörnyezethez.