Activator Třída

Definice

Obsahuje metody pro místní nebo vzdálené vytváření typů objektů nebo získání odkazů na existující vzdálené objekty. Tato třída se nemůže dědit.

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
Dědičnost
Activator
Atributy
Implementuje

Příklady

Následující příklad ukazuje, jak pomocí Activator třídy dynamicky vytvářet objekty za běhu.

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

Poznámky

Metoda CreateInstance vytvoří instanci typu definovaného v sestavení vyvoláním konstruktoru, který nejlépe odpovídá zadaným argumentů. Pokud nejsou zadány žádné argumenty, konstruktor, který nepřijímá žádné parametry, to znamená konstruktor bez parametrů, je vyvolán.

Musíte mít dostatečná oprávnění k vyhledání a volání konstruktoru; v opačném případě je vyvolán výjimka. Ve výchozím nastavení se při hledání konstruktoru považují pouze veřejné konstruktory. Pokud nelze najít žádný konstruktor nebo konstruktor bez parametrů, vyvolá se výjimka.

Parametr pořadače určuje objekt, který hledá sestavení vhodného konstruktoru. Můžete zadat vlastní pořadač a kritéria hledání. Pokud není zadán žádný pořadač, použije se výchozí pořadač. Další informace najdete ve třídách System.Reflection.Binder a System.Reflection.BindingFlags.

Parametr důkazu ovlivňuje zásady zabezpečení a oprávnění pro konstruktor. Další informace najdete ve třídě System.Security.Policy.Evidence.

Instanci typu lze vytvořit v místní nebo vzdálené lokalitě. Pokud je typ vytvořen vzdáleně, parametr atributu aktivace určuje identifikátor URI vzdálené lokality. Volání k vytvoření instance může projít zprostředkujícími lokalitami předtím, než dosáhne vzdálené lokality. Jiné atributy aktivace můžou upravit prostředí nebo kontext, ve kterém volání funguje ve vzdálených a zprostředkujících lokalitách.

Pokud je instance vytvořena místně, vrátí se odkaz na tento objekt. Pokud je instance vytvořena vzdáleně, vrátí se odkaz na proxy server. Vzdálený objekt se manipuluje přes proxy server, jako by se jednalo o místní objekt.

Tato GetObject metoda vytvoří proxy server pro aktuálně spuštěný vzdálený objekt, serverově aktivovaný dobře známý objekt nebo webovou službu XML. Můžete zadat médium připojení, to znamená kanál. Další informace najdete ve třídě System.Runtime.Remoting.Channels.ChannelServices.

Sestavení obsahují definice typu. Metoda CreateInstance vytvoří instanci typu z aktuálně spuštěného sestavení. Metoda CreateInstanceFrom vytvoří instanci ze souboru, který obsahuje sestavení. Metoda CreateComInstanceFrom vytvoří instanci objektu COM ze souboru, který obsahuje sestavení.

Metody

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

Vytvoří instanci objektu COM, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů.

CreateComInstanceFrom(String, String)

Vytvoří instanci objektu COM, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů.

CreateInstance(ActivationContext, String[])

Vytvoří instanci typu určeného zadaným ActivationContext objektem a aktivuje se zadanými vlastními aktivačními daty.

CreateInstance(ActivationContext)

Vytvoří instanci typu určeného zadaným ActivationContext objektem.

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

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně, pomocí pojmenovaného sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

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

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně, pomocí pojmenovaného sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstance(AppDomain, String, String)

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně pomocí pojmenovaného sestavení a konstruktoru bez parametrů.

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

Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

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

Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstance(String, String, Object[])

Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného sestavení a konstruktoru bez parametrů.

CreateInstance(String, String)

Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného sestavení a konstruktoru bez parametrů.

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

Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům.

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

Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstance(Type, Boolean)

Vytvoří instanci zadaného typu pomocí konstruktoru bez parametrů tohoto typu.

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

Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstance(Type, Object[])

Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstance(Type)

Vytvoří instanci zadaného typu pomocí konstruktoru bez parametrů tohoto typu.

CreateInstance<T>()

Vytvoří instanci typu určeného zadaným parametrem obecného typu pomocí konstruktoru bez parametrů.

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

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně, pomocí pojmenovaného souboru sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

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

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně, pomocí pojmenovaného souboru sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstanceFrom(AppDomain, String, String)

Vytvoří instanci typu, jehož název je zadán v zadané vzdálené doméně pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů.

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

Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

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

Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru, který nejlépe odpovídá zadaným parametrům.

CreateInstanceFrom(String, String, Object[])

Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů.

CreateInstanceFrom(String, String)

Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů.

GetObject(Type, String, Object)

Vytvoří proxy server pro dobře známý objekt označený zadaným typem, adresou URL a daty kanálu.

GetObject(Type, String)

Vytvoří proxy server pro dobře známý objekt označený zadaným typem a adresou URL.

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

_Activator.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

_Activator.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

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

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

Platí pro