Assembly.CreateInstance Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Letar upp en typ från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn.
Överlagringar
| Name | Description |
|---|---|
| CreateInstance(String) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn med hjälp av skiftlägeskänslig sökning. |
| CreateInstance(String, Boolean) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning och med angiven kultur, argument och bindnings- och aktiveringsattribut. |
CreateInstance(String)
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn med hjälp av skiftlägeskänslig sökning.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance(string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
member this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object
Parametrar
Returer
En instans av den angivna typen som skapats med den parameterlösa konstruktorn. eller null om typeName det inte hittas. Typen matchas med standardbindningen, utan att ange kultur- eller aktiveringsattribut, och med BindingFlags värdet Public eller Instance.
Implementeringar
Undantag
typeName är en tom sträng ("") eller en sträng som börjar med ett null-tecken.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion.
typeName är null.
Ingen matchande konstruktor hittades.
typeName kräver en beroende sammansättning som inte kunde hittas.
typeName kräver en beroende sammansättning som hittades men inte kunde läsas in.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion och typeName kräver en beroende sammansättning som inte har förinstallerats.
typeName kräver en beroende sammansättning, men filen är inte en giltig sammansättning för den inlästa körningen.
Exempel
I följande exempel definieras en Person klass och metoden anropas CreateInstance(String) för att instansiera den.
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'
Kommentarer
Om körningen inte kan hittas typeName i instansen Assembly returneras null den i stället för att utlösa ett undantag. Detta kan inträffa eftersom:
Du har inte angett det fullständigt kvalificerade namnet på typen.
Du har angett det fullständigt kvalificerade typnamnet, men dess skiftläge matchar inte fallet för typens Type.FullName egenskap. För en skiftlägeskänslig jämförelse av
typeNamemed typens fullständiga namn anropar du överlagringen CreateInstance(String, Boolean) och angertrueförignoreCaseargumentet.Typen finns inte i den aktuella Assembly instansen.
Gäller för
CreateInstance(String, Boolean)
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object CreateInstance(string typeName, bool ignoreCase);
abstract member CreateInstance : string * bool -> obj
override this.CreateInstance : string * bool -> obj
member this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object
Parametrar
- ignoreCase
- Boolean
trueför att ignorera fallet med typnamnet. annars . false
Returer
En instans av den angivna typen som skapats med den parameterlösa konstruktorn. eller null om typeName det inte hittas. Typen matchas med standardbindningen, utan att ange kultur- eller aktiveringsattribut, och med BindingFlags värdet Public eller Instance.
Implementeringar
Undantag
typeName är en tom sträng ("") eller en sträng som börjar med ett null-tecken.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion.
Ingen matchande konstruktor hittades.
typeName är null.
typeName kräver en beroende sammansättning som inte kunde hittas.
typeName kräver en beroende sammansättning som hittades men inte kunde läsas in.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion och typeName kräver en beroende sammansättning som inte har förinstallerats.
typeName kräver en beroende sammansättning, men filen är inte en giltig sammansättning för den inlästa körningen.
Exempel
I följande exempel definieras en Person klass. Sedan anropas CreateInstance(String) metoden för att instansiera den, men eftersom argumentets hölje typeName inte matchar egenskapen för typen FullName returnerar nullmetoden . När exemplet skickar samma sträng till överlagringen CreateInstance(String, Boolean) och anger att jämförelsen ska vara skiftlägeskänslig Person , hittas klassen och ett Person objekt instansieras.
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'
Kommentarer
Om körningen inte kan hittas typeName i instansen Assembly returneras null den i stället för att utlösa ett undantag. Detta kan inträffa eftersom:
Du har inte angett det fullständigt kvalificerade namnet på typen.
Typen finns inte i den aktuella Assembly instansen.
Gäller för
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Letar upp den angivna typen från den här sammansättningen och skapar en instans av den med hjälp av systemaktivatorn, med valfri skiftlägeskänslig sökning och med angiven kultur, argument och bindnings- och aktiveringsattribut.
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 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);
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 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 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
Parametrar
- ignoreCase
- Boolean
trueför att ignorera fallet med typnamnet. annars . false
- bindingAttr
- BindingFlags
En bitmask som påverkar hur sökningen utförs. Värdet är en kombination av bitflaggor från BindingFlags.
- binder
- Binder
Ett objekt som möjliggör bindning, tvång av argumenttyper, anrop av medlemmar och hämtning av MemberInfo objekt via reflektion. Om binder är nullanvänds standardbindningen.
- args
- Object[]
En matris som innehåller argumenten som ska skickas till konstruktorn. Den här argumentmatrisen måste matcha i tal, ordning och ange parametrarna för konstruktorn som ska anropas. Om den parameterlösa konstruktorn önskas args måste den vara en tom matris eller null.
- culture
- CultureInfo
En instans av CultureInfo som används för att styra tvång av typer. Om detta är nullCultureInfo används för den aktuella tråden. (Detta är nödvändigt för att konvertera en sträng som representerar 1 000 till ett Double värde, till exempel eftersom 1 000 representeras på olika sätt av olika kulturer.)
- activationAttributes
- Object[]
En matris med ett eller flera attribut som kan delta i aktiveringen. Vanligtvis en matris som innehåller ett enda UrlAttribute objekt som anger den URL som krävs för att aktivera ett fjärrobjekt. Den här parametern är relaterad till klientaktiverade objekt. Klientaktivering är en äldre teknik som behålls för bakåtkompatibilitet men rekommenderas inte för ny utveckling. Distribuerade program bör i stället använda Windows Communication Foundation.
Returer
En instans av den angivna typen, eller null om typeName den inte hittas. De angivna argumenten används för att matcha typen och för att binda konstruktorn som används för att skapa instansen.
Implementeringar
Undantag
typeName är en tom sträng ("") eller en sträng som börjar med ett null-tecken.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion.
typeName är null.
Ingen matchande konstruktor hittades.
En matris med icke-tomma aktiveringsattribut skickas till en typ som inte ärver från MarshalByRefObject.
typeName kräver en beroende sammansättning som inte kunde hittas.
typeName kräver en beroende sammansättning som hittades men inte kunde läsas in.
-eller-
Den aktuella sammansättningen lästes in i kontexten endast reflektion och typeName kräver en beroende sammansättning som inte har förinstallerats.
typeName kräver en beroende sammansättning, men filen är inte en giltig sammansättning för den inlästa körningen.