Freigeben über


Activator Klasse

Definition

Enthält Methoden, mit denen Objekttypen lokal oder remote erstellt und Verweise auf vorhandene Remoteobjekte abgerufen werden können. Diese Klasse kann nicht vererbt werden.

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
Vererbung
Activator
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird gezeigt, wie Die Activator -Klasse verwendet wird, um Objekte zur Laufzeit dynamisch zu erstellen.

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

Hinweise

Die CreateInstance -Methode erstellt eine Instanz eines Typs, der in einer Assembly definiert ist, indem der Konstruktor aufgerufen wird, der den angegebenen Argumenten am besten entspricht. Wenn keine Argumente angegeben werden, wird der Konstruktor aufgerufen, der keine Parameter akzeptiert, d. h. der parameterlose Konstruktor.

Sie müssen über ausreichende Berechtigungen verfügen, um nach einem Konstruktor zu suchen und ihn aufzurufen. Andernfalls wird eine Ausnahme ausgelöst. Standardmäßig werden bei der Suche nach einem Konstruktor nur öffentliche Konstruktoren berücksichtigt. Wenn kein Konstruktor oder parameterloser Konstruktor gefunden werden kann, wird eine Ausnahme ausgelöst.

Ein Binderparameter gibt ein Objekt an, das eine Assembly nach einem geeigneten Konstruktor durchsucht. Sie können Eigene Binder- und Suchkriterien angeben. Wenn kein Binder angegeben ist, wird ein Standardbinder verwendet. Weitere Informationen finden Sie in den Ausführungen zur System.Reflection.Binder-Klasse und zur System.Reflection.BindingFlags-Klasse.

Ein Beweisparameter wirkt sich auf die Sicherheitsrichtlinie und die Berechtigungen für den Konstruktor aus. Weitere Informationen finden Sie in den Ausführungen zur System.Security.Policy.Evidence-Klasse.

Eine Instanz eines Typs kann an einem lokalen oder Remotestandort erstellt werden. Wenn der Typ remote erstellt wird, gibt ein Aktivierungsattributparameter den URI des Remotestandorts an. Der Aufruf zum Erstellen der Instanz kann zwischengeschaltete Standorte durchlaufen, bevor sie den Remotestandort erreicht. Andere Aktivierungsattribute können die Umgebung oder den Kontext ändern, in der der Aufruf an den Remote- und Zwischenstandorten ausgeführt wird.

Wenn die Instanz lokal erstellt wird, wird ein Verweis auf dieses Objekt zurückgegeben. Wenn die Instanz remote erstellt wird, wird ein Verweis auf einen Proxy zurückgegeben. Das Remoteobjekt wird über den Proxy so bearbeitet, als wäre es ein lokales Objekt.

Die GetObject -Methode erstellt einen Proxy für ein derzeit ausgeführtes Remoteobjekt, ein vom Server aktiviertes bekanntes Objekt oder einen XML-Webdienst. Sie können das Verbindungsmedium angeben, d. h. den Kanal. Weitere Informationen finden Sie in den Ausführungen zur System.Runtime.Remoting.Channels.ChannelServices-Klasse.

Assemblys enthalten Typdefinitionen. Die CreateInstance -Methode erstellt eine Instanz eines Typs aus einer derzeit ausgeführten Assembly. Die CreateInstanceFrom -Methode erstellt eine -Instanz aus einer Datei, die eine Assembly enthält. Die CreateComInstanceFrom -Methode erstellt eine Instanz eines COM-Objekts aus einer Datei, die eine Assembly enthält.

Methoden

CreateComInstanceFrom(String, String)

Erstellt eine Instanz des COM-Objekts mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des parameterlosen Konstruktors.

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

Erstellt eine Instanz des COM-Objekts mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des parameterlosen Konstruktors.

CreateInstance(ActivationContext)

Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt wurde.

CreateInstance(ActivationContext, String[])

Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt und mit den angegebenen benutzerdefinierten Aktivierungsdaten aktiviert wird.

CreateInstance(AppDomain, String, String)

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.

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

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht.

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

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht.

CreateInstance(String, String)

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.

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

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.

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

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.

CreateInstance(String, String, Object[])

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.

CreateInstance(Type)

Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs.

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

Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.

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

Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.

CreateInstance(Type, Boolean)

Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs.

CreateInstance(Type, Object[])

Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.

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

Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.

CreateInstance<T>()

Erstellt mit dem parameterlosen Konstruktor eine Instanz des Typs, der vom angegebenen generischen Typparameter festgelegt wurde.

CreateInstanceFrom(AppDomain, String, String)

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des parameterlosen Konstruktors.

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

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des Konstruktors, der den angegebenen Parametern am besten entspricht.

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

Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des Konstruktors, der den angegebenen Parametern am besten entspricht.

CreateInstanceFrom(String, String)

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des parameterlosen Konstruktors.

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

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.

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

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.

CreateInstanceFrom(String, String, Object[])

Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assemblydatei und des parameterlosen Konstruktors.

GetObject(Type, String)

Erstellt einen Proxy für das bekannte Objekt, das durch die Angabe von Typ und URL bestimmt wird.

GetObject(Type, String, Object)

Erstellt einen Proxy für das bekannte Objekt, das durch die Angabe von Typ, URL und Channeldaten bestimmt wird.

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

_Activator.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können.

_Activator.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

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

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

Gilt für: