Assembly.CreateInstance Metódus

Definíció

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

typeName
String

A FullName keresendő típus.

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 typeName esetén hívja meg a CreateInstance(String, Boolean) túlterhelést, és adja meg true az ignoreCase argumentumot.

  • 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

typeName
String

A FullName keresendő típus.

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

typeName
String

A FullName keresendő típus.

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.

A következőre érvényes: