Activator Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Содержит методы для создания типов объектов локально или удаленно или получить ссылки на существующие удаленные объекты. Этот класс не наследуется.
public ref class Activator abstract sealed
public ref class Activator sealed : System::Runtime::InteropServices::_Activator
public static class Activator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Activator : System.Runtime.InteropServices._Activator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Activator : System.Runtime.InteropServices._Activator
type Activator = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Activator = class
interface _Activator
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Activator = class
interface _Activator
Public Class Activator
Public NotInheritable Class Activator
Implements _Activator
- Наследование
-
Activator
- Атрибуты
- Реализации
Примеры
В следующем примере показано, как использовать Activator класс для динамического создания объектов во время выполнения.
using System;
using System.Reflection;
using System.Text;
public class SomeType
{
public void DoSomething(int x)
{
Console.WriteLine("100 / {0} = {1}", x, 100 / x);
}
}
public class Example
{
static void Main()
{
// Create an instance of the StringBuilder type using
// Activator.CreateInstance.
Object o = Activator.CreateInstance(typeof(StringBuilder));
// Append a string into the StringBuilder object and display the
// StringBuilder.
StringBuilder sb = (StringBuilder) o;
sb.Append("Hello, there.");
Console.WriteLine(sb);
// Create an instance of the SomeType class that is defined in this
// assembly.
System.Runtime.Remoting.ObjectHandle oh =
Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase,
typeof(SomeType).FullName);
// Call an instance method defined by the SomeType type using this object.
SomeType st = (SomeType) oh.Unwrap();
st.DoSomething(5);
}
}
/* This code produces the following output:
Hello, there.
100 / 5 = 20
*/
open System
open System.Reflection
open System.Text
type SomeType() =
member _.DoSomething(x) = printfn $"100 / {x} = {100 / x}"
// Create an instance of the StringBuilder type using Activator.CreateInstance.
let o = Activator.CreateInstance typeof<StringBuilder>
// Append a string into the StringBuilder object and display the StringBuilder.
let sb = o :?> StringBuilder
sb.Append "Hello, there." |> ignore
printfn $"{sb}"
// Create an instance of the SomeType class that is defined in this assembly.
let oh =
Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().Location, typeof<SomeType>.FullName)
// Call an instance method defined by the SomeType type using this object.
let st = oh.Unwrap() :?> SomeType
st.DoSomething 5
(* This code produces the following output:
Hello, there.
100 / 5 = 20
*)
Imports System.Reflection
Imports System.Text
Module Module1
Sub Main()
' Create an instance of the StringBuilder type using
' Activator.CreateInstance.
Dim o As Object = Activator.CreateInstance(GetType(StringBuilder))
' Append a string into the StringBuilder object and display the
' StringBuilder.
Dim sb As StringBuilder = CType(o, StringBuilder)
sb.Append("Hello, there.")
Console.WriteLine(sb)
' Create an instance of the SomeType class that is defined in this assembly.
Dim oh As System.Runtime.Remoting.ObjectHandle = _
Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase, _
GetType(SomeType).FullName)
' Call an instance method defined by the SomeType type using this object.
Dim st As SomeType = CType(oh.Unwrap(), SomeType)
st.DoSomething(5)
End Sub
Class SomeType
Public Sub DoSomething(ByVal x As Int32)
Console.WriteLine("100 / {0} = {1}", x, 100 \ x)
End Sub
End Class
End Module
' This code produces the following output:
'
' Hello, there.
' 100 / 5 = 20
Комментарии
Метод CreateInstance создает экземпляр типа, определенного в сборке, путем вызова конструктора, который лучше всего соответствует указанным аргументам. Если аргументы не заданы, конструктор, принимаюющий никаких параметров, то есть конструктор без параметров, вызывается.
Необходимо иметь достаточно разрешений для поиска и вызова конструктора; в противном случае создается исключение. По умолчанию во время поиска конструктора учитываются только открытые конструкторы. Если конструктор или конструктор без параметров не найден, создается исключение.
Параметр привязки указывает объект, который выполняет поиск сборки для подходящего конструктора. Вы можете указать собственные критерии привязки и поиска. Если привязка не указана, используется привязка по умолчанию. Для получения дополнительной информации см. классы System.Reflection.Binder и System.Reflection.BindingFlags.
Параметр доказательства влияет на политику безопасности и разрешения конструктора. Дополнительные сведения см. в описании класса System.Security.Policy.Evidence.
Экземпляр типа можно создать на локальном или удаленном сайте. Если тип создается удаленно, параметр атрибута активации задает универсальный код ресурса (URI) удаленного сайта. Вызов создания экземпляра может пройти через промежуточные сайты, прежде чем он достигнет удаленного сайта. Другие атрибуты активации могут изменять среду или контекст, в котором вызов работает на удаленных и промежуточных сайтах.
Если экземпляр создается локально, возвращается ссылка на этот объект. Если экземпляр создается удаленно, возвращается ссылка на прокси-сервер. Удаленный объект управляется через прокси-сервер, как если бы он был локальным объектом.
Метод GetObject создает прокси-сервер для текущего удаленного объекта, хорошо активированного сервера объекта или веб-службы XML. Можно указать среду подключения, то есть канал. Дополнительные сведения см. в описании класса System.Runtime.Remoting.Channels.ChannelServices.
Сборки содержат определения типов. Метод CreateInstance создает экземпляр типа из запущенной сборки. Метод CreateInstanceFrom создает экземпляр из файла, содержащего сборку. Метод CreateComInstanceFrom создает экземпляр COM-объекта из файла, содержащего сборку.
Методы
| Имя | Описание |
|---|---|
| CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm) |
Создает экземпляр COM-объекта, имя которого указано с помощью именованного файла сборки и конструктора без параметров. |
| CreateComInstanceFrom(String, String) |
Создает экземпляр COM-объекта, имя которого указано с помощью именованного файла сборки и конструктора без параметров. |
| CreateInstance(ActivationContext, String[]) |
Создает экземпляр типа, который назначается указанным ActivationContext объектом и активируется с указанными пользовательскими данными активации. |
| CreateInstance(ActivationContext) |
Создает экземпляр типа, указанного указанным ActivationContext объектом. |
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstance(AppDomain, String, String) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, с помощью именованного сборки и конструктора без параметров. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstance(String, String, Object[]) |
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров. |
| CreateInstance(String, String) |
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
| CreateInstance(Type, Boolean) |
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа. |
| CreateInstance(Type, Object[], Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
| CreateInstance(Type, Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
| CreateInstance(Type) |
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа. |
| CreateInstance<T>() |
Создает экземпляр типа, указанного указанным параметром универсального типа, с помощью конструктора без параметров. |
| CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованный файл сборки и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованный файл сборки и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstanceFrom(AppDomain, String, String) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, с помощью именованного файла сборки и конструктора без параметров. |
| CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано, используя именованный файл сборки и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано, используя именованный файл сборки и конструктор, который лучше всего соответствует указанным параметрам. |
| CreateInstanceFrom(String, String, Object[]) |
Создает экземпляр типа, имя которого указано с помощью именованного файла сборки и конструктора без параметров. |
| CreateInstanceFrom(String, String) |
Создает экземпляр типа, имя которого указано с помощью именованного файла сборки и конструктора без параметров. |
| GetObject(Type, String, Object) |
Создает прокси-сервер для известного объекта, указанного указанным типом, URL-адресом и данными канала. |
| GetObject(Type, String) |
Создает прокси-сервер для известного объекта, указанного указанным типом и URL-адресом. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| _Activator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. |
| _Activator.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. |
| _Activator.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). |
| _Activator.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к свойствам и методам, предоставляемым объектом. |