Бөлісу құралы:


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 namespace System;
using namespace System::Reflection;
using namespace System::Text;

public ref class SomeType
{
public:
    void DoSomething(int x)
    {
        Console::WriteLine("100 / {0} = {1}", x, 100 / x);
    }
};

void main()
{
    // Create an instance of the StringBuilder type using 
    // Activator.CreateInstance.
    Object^ o = Activator::CreateInstance(StringBuilder::typeid);

    // 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, 
                                      SomeType::typeid->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
 */
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)

Создает экземпляр COM-объекта с заданным именем, используя для этого файл именованной сборки и конструктор без параметров.

CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)

Создает экземпляр COM-объекта с заданным именем, используя для этого файл именованной сборки и конструктор без параметров.

CreateInstance(ActivationContext)

Создает экземпляр типа, назначенного указанным объектом ActivationContext.

CreateInstance(ActivationContext, String[])

Создает экземпляр типа, назначенного указанным объектом ActivationContext и активированного с помощью указанных пользовательских данных активации.

CreateInstance(AppDomain, String, String)

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого именованную сборку и конструктор без параметров.

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

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого именованную сборку и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Является устаревшей.

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого именованную сборку и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstance(String, String)

Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор без параметров.

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

Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Является устаревшей.

Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstance(String, String, Object[])

Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор без параметров.

CreateInstance(Type)

Создает экземпляр указанного типа, используя конструктор этого типа без параметров.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)

Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.

CreateInstance(Type, Boolean)

Создает экземпляр указанного типа, используя конструктор этого типа без параметров.

CreateInstance(Type, Object[])

Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.

CreateInstance(Type, Object[], Object[])

Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.

CreateInstance<T>()

Создает экземпляр типа, объявленного в указанном параметре универсального типа, с помощью конструктора без параметров.

CreateInstanceFrom(AppDomain, String, String)

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого файл именованной сборки и конструктор без параметров.

CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого файл именованной сборки и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Является устаревшей.

Создает экземпляр типа с заданным именем в указанном удаленном домене, используя для этого файл именованной сборки и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstanceFrom(String, String)

Создает экземпляр типа с заданным именем, используя для этого файл именованной сборки и конструктор без параметров.

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

Создает экземпляр типа с заданным именем, используя для этого файл именованной сборки и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Является устаревшей.

Создает экземпляр типа с заданным именем, используя для этого файл именованной сборки и конструктор, который наилучшим образом соответствует заданным параметрам.

CreateInstanceFrom(String, String, Object[])

Создает экземпляр типа с заданным именем, используя для этого файл именованной сборки и конструктор без параметров.

GetObject(Type, String)

Создает прокси для хорошо известного объекта, определенного заданным типом и URL.

GetObject(Type, String, Object)

Создает прокси для хорошо известного объекта, который идентифицируется по заданному типу, 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)

Предоставляет доступ к открытым свойствам и методам объекта.

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