Assembly.CreateInstance Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Lokalizuje typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu.
Przeciążenia
CreateInstance(String) |
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu przy użyciu wyszukiwania uwzględniającego wielkość liter. |
CreateInstance(String, Boolean) |
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem z uwzględnieniem wielkości liter. |
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem uwzględniającym wielkość liter i określonymi kulturami, argumentami oraz atrybutami powiązania i aktywacji. |
CreateInstance(String)
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu przy użyciu wyszukiwania uwzględniającego wielkość liter.
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
Zwraca
Wystąpienie określonego typu utworzone za pomocą konstruktora bez parametrów; lub null
jeśli typeName
nie zostanie znaleziony. Typ jest rozpoznawany przy użyciu domyślnego powiązania, bez określania atrybutów kultury lub aktywacji oraz z ustawioną wartością BindingFlagsPublic
lub Instance
.
Implementuje
Wyjątki
typeName
jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia.
typeName
to null
.
Nie znaleziono pasującego konstruktora.
typeName
wymaga zestawu zależnego, którego nie można odnaleźć.
typeName
wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName
wymaga zależnego zestawu, który nie został wstępnie załadowany.
typeName
wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.
Przykłady
W poniższym przykładzie zdefiniowano klasę i wywołaliśmy metodę Person
CreateInstance(String) , aby utworzyć jej wystąpienie.
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'
Uwagi
Jeśli środowisko uruchomieniowe nie może znaleźć typeName
w wystąpieniu Assembly , zwraca null
wartość zamiast zgłaszać wyjątek. Może się tak zdarzyć, ponieważ:
Nie określono w pełni kwalifikowanej nazwy typu.
Określono w pełni kwalifikowaną nazwę typu, ale jej wielkość liter nie jest zgodna Type.FullName z wielkością liter właściwości typu. W przypadku porównania
typeName
bez uwzględniania wielkości liter z pełną nazwą typu wywołaj CreateInstance(String, Boolean) przeciążenie i określtrue
argumentignoreCase
.Typ nie istnieje w bieżącym Assembly wystąpieniu.
Dotyczy
CreateInstance(String, Boolean)
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem z uwzględnieniem wielkości liter.
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
ignorować wielkość liter nazwy typu; w przeciwnym razie , false
.
Zwraca
Wystąpienie określonego typu utworzone za pomocą konstruktora bez parametrów; lub null
jeśli typeName
nie zostanie znaleziony. Typ jest rozpoznawany przy użyciu domyślnego powiązania, bez określania atrybutów kultury lub aktywacji oraz z ustawioną wartością BindingFlagsPublic
lub Instance
.
Implementuje
Wyjątki
typeName
jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia.
Nie znaleziono pasującego konstruktora.
typeName
to null
.
typeName
wymaga zestawu zależnego, którego nie można odnaleźć.
typeName
wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName
wymaga zależnego zestawu, który nie został wstępnie załadowany.
typeName
wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.
Przykłady
W poniższym przykładzie zdefiniowano klasę Person
. Następnie wywołuje metodę CreateInstance(String) , aby utworzyć wystąpienie, ale ponieważ wielkość liter typeName
argumentu nie jest zgodna z właściwością typu FullName , metoda zwraca wartość null
. Gdy przykład przekazuje ten sam ciąg do CreateInstance(String, Boolean) przeciążenia i określa, że porównanie powinno być bez uwzględniania wielkości liter, Person
klasa zostanie znaleziona, a Person
obiekt zostanie pomyślnie utworzony.
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'
Uwagi
Jeśli środowisko uruchomieniowe nie może znaleźć typeName
w wystąpieniu Assembly , zwraca null
wartość zamiast zgłaszać wyjątek. Może się tak zdarzyć, ponieważ:
Nie określono w pełni kwalifikowanej nazwy typu.
Typ nie istnieje w bieżącym Assembly wystąpieniu.
Dotyczy
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
- Źródło:
- Assembly.cs
Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem uwzględniającym wielkość liter i określonymi kulturami, argumentami oraz atrybutami powiązania i aktywacji.
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
ignorować wielkość liter nazwy typu; w przeciwnym razie , false
.
- bindingAttr
- BindingFlags
Maska bitowa, która wpływa na sposób przeprowadzania wyszukiwania. Wartość jest kombinacją flag bitowych z BindingFlags.
- binder
- Binder
Obiekt, który umożliwia powiązanie, przymus typów argumentów, wywołanie elementów członkowskich i pobieranie MemberInfo
obiektów za pośrednictwem odbicia. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica zawierająca argumenty, które mają zostać przekazane do konstruktora. Ta tablica argumentów musi być zgodna z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli wymagany jest konstruktor bez parametrów, args
musi być pustą tablicą lub null
.
- culture
- CultureInfo
Wystąpienie używane do nadzorowania CultureInfo
przymusu typów. Jeśli jest null
to wartość , CultureInfo używany jest element dla bieżącego wątku. (Jest to konieczne, aby przekonwertować ciąg reprezentujący 1000 na Double wartość, na przykład ponieważ 1000 jest reprezentowane inaczej przez różne kultury).
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego. Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Wystąpienie określonego typu lub null
jeśli typeName
nie zostanie znalezione. Podane argumenty są używane do rozpoznawania typu i powiązania konstruktora używanego do utworzenia wystąpienia.
Implementuje
Wyjątki
typeName
jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia.
typeName
to null
.
Nie znaleziono pasującego konstruktora.
Tablica atrybutów aktywacji niepustych jest przekazywana do typu, który nie dziedziczy z MarshalByRefObjectklasy .
typeName
wymaga zestawu zależnego, którego nie można odnaleźć.
typeName
wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.
-lub-
Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName
wymaga zależnego zestawu, który nie został wstępnie załadowany.
typeName
wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.