Activator Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Obsahuje metody pro místní nebo vzdálené vytváření typů objektů nebo získání odkazů na existující vzdálené objekty. Tuto třídu nelze zdě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 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
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ý přebírá žádné parametry, tj. 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 konstruktor nebo konstruktor bez parametrů, vyvolá se výjimka.
Parametr pořadače určuje objekt, který vyhledá 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 v tématech System.Reflection.Binder a System.Reflection.BindingFlags třídách.
Parametr důkazu ovlivňuje zásady zabezpečení a oprávnění konstruktoru. Další informace najdete v předmětu 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, 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, 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 v předmětu 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
CreateComInstanceFrom(String, String) |
Vytvoří instanci objektu COM, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů. |
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm) |
Vytvoří instanci objektu COM, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů. |
CreateInstance(ActivationContext) |
Vytvoří instanci typu určeného zadaným ActivationContext objektem. |
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(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(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, 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(String, String) |
Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného sestavení a konstruktoru bez parametrů. |
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, 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, Object[]) |
Vytvoří instanci typu, jejíž název je zadán, pomocí pojmenovaného sestavení a konstruktoru bez parametrů. |
CreateInstance(Type) |
Vytvoří instanci zadaného typu pomocí konstruktoru bez parametrů daného typu. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům. |
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, Boolean) |
Vytvoří instanci zadaného typu pomocí konstruktoru bez parametrů daného typu. |
CreateInstance(Type, Object[]) |
Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům. |
CreateInstance(Type, Object[], Object[]) |
Vytvoří instanci zadaného typu pomocí konstruktoru, který nejlépe odpovídá zadaným parametrům. |
CreateInstance<T>() |
Vytvoří instanci typu určeného zadaným parametrem obecného typu pomocí konstruktoru bez parametrů. |
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(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, 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(String, String) |
Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů. |
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, 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, Object[]) |
Vytvoří instanci typu, jehož název je zadán, pomocí pojmenovaného souboru sestavení a konstruktoru bez parametrů. |
GetObject(Type, String) |
Vytvoří proxy server pro dobře známý objekt označený zadaným typem a adresou URL. |
GetObject(Type, String, Object) |
Vytvoří proxy server pro dobře známý objekt označený zadaným typem, adresou URL a daty kanálu. |
Explicitní implementace rozhraní
_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. |