Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Method

Определение

Находит тип в этой сборке и создает его экземпляр, используя абстрактный метод.Locates a type from this assembly and creates an instance of it using the system activator.

Перегрузки

CreateInstance(String) CreateInstance(String) CreateInstance(String) CreateInstance(String)

С помощью поиска с учетом регистра находит заданный тип в этой сборке и создает его экземпляр, используя абстрактный метод.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean)

При помощи необязательного поиска с учетом регистра находит заданный тип в этой сборке и создает его экземпляр, используя абстрактный метод.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Находит в сборке указанный тип и создает его экземпляр с использованием системного активатора при помощи необязательного поиска с учетом регистра и с заданными аргументами, культурой, а также атрибутами привязки и активации.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

CreateInstance(String) CreateInstance(String) CreateInstance(String) CreateInstance(String)

С помощью поиска с учетом регистра находит заданный тип в этой сборке и создает его экземпляр, используя абстрактный метод.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance (string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

Параметры

typeName
String String String String

FullName искомого типа.The FullName of the type to locate.

Возвраты

Экземпляр указанного типа, созданный с использованием конструктора по умолчанию; или null, если typeName не найден.An instance of the specified type created with the default constructor; or null if typeName is not found. Тип разрешается с использованием связывателя по умолчанию, не задавая языка и региональных параметров, а также атрибутов активации, при этом для объекта BindingFlags задано значение Public или Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Реализации

Исключения

Значение typeName является пустой строкой ("") или строкой, начинающейся с нуль-символа.typeName is an empty string ("") or a string beginning with a null character.

-или--or- Текущая сборка была загружена в контекст только для отражения.The current assembly was loaded into the reflection-only context.

Соответствующий конструктор не найден.No matching constructor was found.

Для typeName требуется зависимая сборка, которую не удается найти.typeName requires a dependent assembly that could not be found.

Для typeName требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.typeName requires a dependent assembly that was found but could not be loaded.

-или--or- Текущая сборка была загружена в контекст только для отражения, а для typeName требуется зависимая сборка, которая не была предварительно загружена.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

Для typeName требуется зависимая сборка, однако файл не является допустимой сборкой.typeName requires a dependent assembly, but the file is not a valid assembly.

-или--or- Для typeName требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Примеры

В следующем примере определяется Person класс и вызывает метод CreateInstance(String) метод для создания его экземпляра.The following example defines a Person class and calls the CreateInstance(String) method to instantiate it.

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'

Комментарии

Если среда CLR не удалось найти typeName в Assembly экземпляра, она возвращает null вместо выдачи исключения.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Это может произойти, когда:This might happen because:

  • Вы не указали полное имя типа.You haven't specified the fully qualified name of the type.

  • Вы указали полностью уточненное имя типа, но его вариант не совпадает по регистру типа Type.FullName свойство.You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. Сравнение без учета регистра typeName с полным именем типа, вызовите CreateInstance(String, Boolean) перегрузки и укажите true для ignoreCase аргумент.For a case-insensitive comparison of typeName with the type's full name, call the CreateInstance(String, Boolean) overload and specify true for the ignoreCase argument.

  • Тип не существует в текущем Assembly экземпляра.The type doesn't exist in the current Assembly instance.

Безопасность

ReflectionPermission
При вызове с поздним связыванием через механизмы например InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Связанное перечисление: MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean)

При помощи необязательного поиска с учетом регистра находит заданный тип в этой сборке и создает его экземпляр, используя абстрактный метод.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

public:
 virtual 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
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object

Параметры

typeName
String String String String

FullName искомого типа.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

Значение true, чтобы игнорировать регистр имени типа, в обратном случае — значение false.true to ignore the case of the type name; otherwise, false.

Возвраты

Экземпляр указанного типа, созданный с использованием конструктора по умолчанию; или null, если typeName не найден.An instance of the specified type created with the default constructor; or null if typeName is not found. Тип разрешается с использованием связывателя по умолчанию, не задавая языка и региональных параметров, а также атрибутов активации, при этом для объекта BindingFlags задано значение Public или Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Реализации

Исключения

Значение typeName является пустой строкой ("") или строкой, начинающейся с нуль-символа.typeName is an empty string ("") or a string beginning with a null character.

-или--or- Текущая сборка была загружена в контекст только для отражения.The current assembly was loaded into the reflection-only context.

Соответствующий конструктор не найден.No matching constructor was found.

Для typeName требуется зависимая сборка, которую не удается найти.typeName requires a dependent assembly that could not be found.

Для typeName требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.typeName requires a dependent assembly that was found but could not be loaded.

-или--or- Текущая сборка была загружена в контекст только для отражения, а для typeName требуется зависимая сборка, которая не была предварительно загружена.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

Для typeName требуется зависимая сборка, однако файл не является допустимой сборкой.typeName requires a dependent assembly, but the file is not a valid assembly.

-или--or- Для typeName требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Примеры

В следующем примере определяется Person класса.The following example defines a Person class. Затем он вызывает CreateInstance(String) метод для создания экземпляра, но поскольку регистр typeName аргумента не соответствует типу FullName свойство, метод возвращает null.It then calls the CreateInstance(String) method to instantiate it, but because the casing of the typeName argument doesn't match that of the type's FullName property, the method returns null. Если в примере передается ту же строку, чтобы CreateInstance(String, Boolean) перегрузки и указывает, что сравнение без учета регистра, Person класс найден и Person успешно создать экземпляр объекта.When the example passes the same string to the CreateInstance(String, Boolean) overload and specifies that the comparison should be case-insensitive, the Person class is found, and a Person object is successfully instantiated.

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'

Комментарии

Если среда CLR не удалось найти typeName в Assembly экземпляра, она возвращает null вместо выдачи исключения.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Это может произойти, когда:This might happen because:

  • Вы не указали полное имя типа.You haven't specified the fully qualified name of the type.

  • Тип не существует в текущем Assembly экземпляра.The type doesn't exist in the current Assembly instance.

Безопасность

ReflectionPermission
При вызове с поздним связыванием через механизмы например InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Связанное перечисление: MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Находит в сборке указанный тип и создает его экземпляр с использованием системного активатора при помощи необязательного поиска с учетом регистра и с заданными аргументами, культурой, а также атрибутами привязки и активации.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

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);
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

Параметры

typeName
String String String String

FullName искомого типа.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

Значение true, чтобы игнорировать регистр имени типа, в обратном случае — значение false.true to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Битовая маска, влияющая на способ выполнения поиска.A bitmask that affects the way in which the search is conducted. Значение является сочетанием одноразрядных флагов из BindingFlags.The value is a combination of bit flags from BindingFlags.

binder
Binder Binder Binder Binder

Объект, позволяющий осуществлять привязку, приведение типов аргументов, вызов элементов, а также поиск объектов MemberInfo с помощью отражения.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Если значение параметра binder равно null, используется связыватель по умолчанию.If binder is null, the default binder is used.

args
Object[]

Массив, содержащий аргументы, передаваемые конструктору.An array that contains the arguments to be passed to the constructor. Этот массив аргументов должен по числу, порядку и типу аргументов соответствовать параметрам вызываемого конструктора.This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. Если нужен конструктор по умолчанию, args должен быть пустым массивом или null.If the default constructor is desired, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Экземпляр объекта CultureInfo, используемого для управления приведением типов.An instance of CultureInfo used to govern the coercion of types. Если значение этого объекта — null, для текущего потока используется CultureInfo.If this is null, the CultureInfo for the current thread is used. (Например, необходимо преобразовывать объект String, представляющий 1000, в значение Double, поскольку при разных языках и региональных параметрах 1000 представляется по-разному.)(This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)

activationAttributes
Object[]

Массив, состоящий из одного или нескольких атрибутов, которые могут участвовать в активации.An array of one or more attributes that can participate in activation. Обычно это массив, содержащий один объект UrlAttribute, определяющий URL-адрес, необходимый для активации удаленного объекта.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. Этот параметр связан с объектами, активируемыми клиентом.This parameter is related to client-activated objects. Активация клиентом — это устаревшая технология, которая сохраняется с целью обеспечения обратной совместимости; ее не рекомендуется использовать для разработки новых приложений.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Сейчас в распределенных приложениях следует использовать Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Возвраты

Экземпляр указанного типа или null, если typeName не найден.An instance of the specified type, or null if typeName is not found. Предоставленные аргументы используются для разрешения типа и привязки конструктора, который используется для создания экземпляра.The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

Реализации

Исключения

Значение typeName является пустой строкой ("") или строкой, начинающейся с нуль-символа.typeName is an empty string ("") or a string beginning with a null character.

-или--or- Текущая сборка была загружена в контекст только для отражения.The current assembly was loaded into the reflection-only context.

Соответствующий конструктор не найден.No matching constructor was found.

Непустой массив атрибутов активации передан в тип, который не является производным от MarshalByRefObject.A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

Для typeName требуется зависимая сборка, которую не удалось найти.typeName requires a dependent assembly that could not be found.

Для typeName требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.typeName requires a dependent assembly that was found but could not be loaded.

-или--or- Текущая сборка была загружена в контекст только для отражения, а для typeName требуется зависимая сборка, которая не была предварительно загружена.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

Для typeName требуется зависимая сборка, однако файл не является допустимой сборкой.typeName requires a dependent assembly, but the file is not a valid assembly.

-или--or- Для typeName требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

Безопасность

ReflectionPermission
При вызове с поздним связыванием через механизмы например InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Связанное перечисление: MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
для создания экземпляра делегата.to create an instance of a delegate. Связанное перечисление: UnmanagedCodeAssociated enumeration: UnmanagedCode

Применяется к