Activator Klasa

Definicja

Zawiera metody tworzenia typów obiektów lokalnie lub zdalnie lub uzyskiwania odwołań do istniejących obiektów zdalnych. Klasa ta nie może być dziedziczona.

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
Dziedziczenie
Activator
Atrybuty
Implementuje

Przykłady

W poniższym przykładzie pokazano, jak używać Activator klasy do dynamicznego konstruowania obiektów w czasie wykonywania.

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

Uwagi

Metoda CreateInstance tworzy wystąpienie typu zdefiniowanego w zestawie przez wywołanie konstruktora, który najlepiej pasuje do określonych argumentów. Jeśli nie określono żadnych argumentów, konstruktor, który nie przyjmuje żadnych parametrów, czyli konstruktor bez parametrów, jest wywoływany.

Musisz mieć wystarczające uprawnienia do wyszukiwania i wywoływania konstruktora; w przeciwnym razie zgłaszany jest wyjątek. Domyślnie podczas wyszukiwania konstruktora są brane pod uwagę tylko publiczne konstruktory. Jeśli nie można odnaleźć konstruktora ani konstruktora bez parametrów, zgłaszany jest wyjątek.

Parametr binder określa obiekt, który wyszukuje zestaw dla odpowiedniego konstruktora. Możesz określić własne kryteria powiązania i wyszukiwania. Jeśli nie określono żadnego powiązania, zostanie użyty domyślny binder. Aby uzyskać więcej informacji, zobacz System.Reflection.Binder klasy i System.Reflection.BindingFlags .

Parametr dowodu wpływa na zasady zabezpieczeń i uprawnienia konstruktora. Aby uzyskać więcej informacji, zobacz klasę System.Security.Policy.Evidence .

Wystąpienie typu można utworzyć w lokacji lokalnej lub zdalnej. Jeśli typ jest tworzony zdalnie, parametr atrybutu aktywacji określa identyfikator URI lokacji zdalnej. Wywołanie w celu utworzenia wystąpienia może przechodzić przez lokacje pośredniczące przed dotarciem do lokacji zdalnej. Inne atrybuty aktywacji mogą modyfikować środowisko lub kontekst, w którym wywołanie działa w lokacjach zdalnych i pośrednich.

Jeśli wystąpienie jest tworzone lokalnie, zwracane jest odwołanie do tego obiektu. Jeśli wystąpienie jest tworzone zdalnie, zwracane jest odwołanie do serwera proxy. Obiekt zdalny jest manipulowany za pośrednictwem serwera proxy tak, jakby był to obiekt lokalny.

Metoda GetObject tworzy serwer proxy do aktualnie uruchomionego obiektu zdalnego, dobrze aktywowanego obiektu serwera lub usługi sieci Web XML. Możesz określić nośnik połączenia, czyli kanał. Aby uzyskać więcej informacji, zobacz klasę System.Runtime.Remoting.Channels.ChannelServices .

Zestawy zawierają definicje typów. Metoda CreateInstance tworzy wystąpienie typu na podstawie aktualnie uruchomionego zestawu. Metoda CreateInstanceFrom tworzy wystąpienie na podstawie pliku zawierającego zestaw. Metoda CreateComInstanceFrom tworzy wystąpienie obiektu COM z pliku zawierającego zestaw.

Metody

CreateComInstanceFrom(String, String)

Tworzy wystąpienie obiektu COM, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora bez parametrów.

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

Tworzy wystąpienie obiektu COM, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora bez parametrów.

CreateInstance(ActivationContext)

Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt.

CreateInstance(ActivationContext, String[])

Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt i aktywowane przy użyciu określonych niestandardowych danych aktywacji.

CreateInstance(AppDomain, String, String)

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora bez parametrów.

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

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestarzałe.

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance(String, String)

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów.

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

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestarzałe.

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance(String, String, Object[])

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów.

CreateInstance(Type)

Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu.

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

Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.

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

Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance(Type, Boolean)

Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu.

CreateInstance(Type, Object[])

Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.

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

Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstance<T>()

Tworzy wystąpienie typu wyznaczonego przez określony parametr typu ogólnego przy użyciu konstruktora bez parametrów.

CreateInstanceFrom(AppDomain, String, String)

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego pliku zestawu i konstruktora bez parametrów.

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

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego pliku zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestarzałe.

Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego pliku zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstanceFrom(String, String)

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora bez parametrów.

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

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestarzałe.

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.

CreateInstanceFrom(String, String, Object[])

Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego pliku zestawu i konstruktora bez parametrów.

GetObject(Type, String)

Tworzy serwer proxy dla dobrze znanego obiektu wskazanego przez określony typ i adres URL.

GetObject(Type, String, Object)

Tworzy serwer proxy dla dobrze znanego obiektu wskazanego przez określony typ, adres URL i dane kanału.

Jawne implementacje interfejsu

_Activator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

_Activator.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, których następnie można użyć do uzyskania informacji o typie interfejsu.

_Activator.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

_Activator.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

Dotyczy