Condividi tramite


Activator.CreateInstance Metodo

Definizione

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

Overload

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

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

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

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

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

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

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

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

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

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

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

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(String, String, Object[])

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

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

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type, Object[])

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

CreateInstance(Type, Boolean)

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

CreateInstance(String, String)

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

CreateInstance(ActivationContext, String[])

Crea un'istanza del tipo designato dall'oggetto ActivationContext specificato e attivato con i dati di attivazione personalizzati specificati.

CreateInstance(Type)

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

CreateInstance(ActivationContext)

Crea un'istanza del tipo designato dall'oggetto ActivationContext specificato.

CreateInstance(AppDomain, String, String)

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

CreateInstance<T>()

Crea un'istanza del tipo designato dal parametro di tipo generico specificato, usando il costruttore senza parametri.

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

Attenzione

Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes, System::Security::Policy::Evidence ^ securityAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityAttributes As Evidence) As ObjectHandle

Parametri

domain
AppDomain

Dominio in cui viene creato il tipo denominato typeName.

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

ignoreCase
Boolean

true per specificare che la ricerca di typeName non fa distinzione tra maiuscole e minuscole; false per specificare che la ricerca fa distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore typeName. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di typeName. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore typeName. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute. Il UrlAttribute specifica l'URL necessario per attivare un oggetto remoto.

securityAttributes
Evidence

Informazioni usate per prendere decisioni sui criteri di sicurezza e concedere autorizzazioni per il codice.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Attributi

Eccezioni

domain o typeName è null.

Non è stato trovato alcun costruttore corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Commenti

Usare CreateInstance quando un host deve eseguire codice in un dominio applicazione con autorizzazioni di sicurezza limitate.

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Si applica a

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

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle

Parametri

domain
AppDomain

Dominio in cui viene creato il tipo denominato typeName.

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

ignoreCase
Boolean

true per specificare che la ricerca di typeName non fa distinzione tra maiuscole e minuscole; false per specificare che la ricerca fa distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore typeName. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di typeName. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore typeName. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Attributi

Eccezioni

domain o typeName è null.

Non è stato trovato alcun costruttore corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Commenti

Usare CreateInstance quando un host deve eseguire codice in un dominio applicazione con autorizzazioni di sicurezza limitate.

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Si applica a

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

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle

Parametri

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

ignoreCase
Boolean

true per specificare che la ricerca di typeName non fa distinzione tra maiuscole e minuscole; false per specificare che la ricerca fa distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore typeName. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di typeName. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore typeName. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Handle che deve essere decomistato per accedere all'istanza appena creata o null per Nullable<T> istanze senza valore.

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Commenti

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per creare tipi e membri non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi e i membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

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

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Object ^ CreateInstance(Type ^ type, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public static object? CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static object CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
static member CreateInstance : Type * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
Public Shared Function CreateInstance (type As Type, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object

Parametri

type
Type

Tipo di oggetto da creare.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore type. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di type. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore type. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Riferimento all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore corrispondente.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Commenti

Il costruttore da richiamare deve fornire la corrispondenza più specifica con l'elenco di argomenti specificato con i vincoli del binder e degli attributi di associazione specificati.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi e membri non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dei tipi e dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset di tali tipi. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

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

Origine:
Activator.cs
Origine:
Activator.cs
Origine:
Activator.cs

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Object ^ CreateInstance(Type ^ type, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture);
public static object? CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture);
public static object CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture);
static member CreateInstance : Type * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj
Public Shared Function CreateInstance (type As Type, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo) As Object

Parametri

type
Type

Tipo di oggetto da creare.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore type. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di type. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore type. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

Restituisce

Riferimento all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore corrispondente.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Commenti

Il costruttore da richiamare deve fornire la corrispondenza più specifica con l'elenco di argomenti specificato con i vincoli del binder e degli attributi di associazione specificati.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi e membri non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi e i membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

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

Origine:
Activator.cs
Origine:
Activator.cs
Origine:
Activator.cs

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Object ^ CreateInstance(Type ^ type, cli::array <System::Object ^> ^ args, cli::array <System::Object ^> ^ activationAttributes);
public static object? CreateInstance (Type type, object?[]? args, object?[]? activationAttributes);
public static object CreateInstance (Type type, object[] args, object[] activationAttributes);
static member CreateInstance : Type * obj[] * obj[] -> obj
Public Shared Function CreateInstance (type As Type, args As Object(), activationAttributes As Object()) As Object

Parametri

type
Type

Tipo di oggetto da creare.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Riferimento all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore pubblico corrispondente.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Commenti

Il costruttore da richiamare deve essere accessibile e deve fornire la corrispondenza più specifica con l'elenco di argomenti specificato.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi non pubblici è limitato al set di concessioni del chiamante o a un subset corrispondente. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(String, String, Object[])

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, object[] activationAttributes);
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, activationAttributes As Object()) As ObjectHandle

Parametri

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per le istanze di Nullable<T>.

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

activationAttributes non è un UrlAttribute

array.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Il costruttore richiamato genera un'eccezione.

-o-

Si è verificato un errore durante il tentativo di attivazione remota in una destinazione specificata in activationAttributes.

Commenti

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per creare tipi non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dei tipi non pubblici è limitato al set di concessioni del chiamante o a un subset di tali tipi. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

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

Attenzione

Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes, System::Security::Policy::Evidence ^ securityInfo);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityInfo);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityInfo);
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityInfo As Evidence) As ObjectHandle

Parametri

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

ignoreCase
Boolean

true per specificare che la ricerca di typeName non fa distinzione tra maiuscole e minuscole; false per specificare che la ricerca fa distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del costruttore typeName. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore di typeName. Se binder è null, viene usato il gestore di associazione predefinito.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il costruttore typeName. Se culture è null, viene utilizzato il CultureInfo per il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. Si tratta in genere di una matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

securityInfo
Evidence

Informazioni usate per prendere decisioni sui criteri di sicurezza e concedere autorizzazioni per il codice.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Attributi

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

activationAttributes non è una matrice vuota e il tipo creato non deriva da MarshalByRefObject.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Commenti

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per creare tipi e membri non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi e i membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(Type, Object[])

Origine:
Activator.cs
Origine:
Activator.cs
Origine:
Activator.cs

Crea un'istanza del tipo specificato usando il costruttore che meglio corrisponde ai parametri specificati.

public:
 static System::Object ^ CreateInstance(Type ^ type, ... cli::array <System::Object ^> ^ args);
public:
 static System::Object ^ CreateInstance(Type ^ type, cli::array <System::Object ^> ^ args);
public static object CreateInstance (Type type, params object[] args);
public static object? CreateInstance (Type type, params object?[]? args);
public static object CreateInstance (Type type, object[] args);
static member CreateInstance : Type * obj[] -> obj
Public Shared Function CreateInstance (type As Type, ParamArray args As Object()) As Object
Public Shared Function CreateInstance (type As Type, args As Object()) As Object

Parametri

type
Type

Tipo di oggetto da creare.

args
Object[]

Matrice di argomenti che corrispondono in numero, ordine e digitare i parametri del costruttore da richiamare. Se args è una matrice vuota o null, viene richiamato il costruttore che non accetta parametri (il costruttore senza parametri).

Restituisce

Riferimento all'oggetto appena creato o null per Nullable<T> istanze senza alcun valore.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

-o-

Il costruttore che meglio corrisponde a args include argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile , intercettare invece l'eccezione della classe di base MemberAccessException.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore pubblico corrispondente.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile , intercettare invece l'eccezione della classe di base MissingMemberException.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Esempio

Nell'esempio seguente viene chiamato il metodo CreateInstance(Type, Object[]) per creare un oggetto String. Chiama il costruttore String.String(Char[], Int32, Int32) per creare un'istanza di una stringa contenente dieci elementi da una matrice di caratteri a partire dalla quattordicesima posizione.

using System;

public class Example
{
   public static void Main()
   {
      // Initialize array of characters from a to z.
      char[] chars = new char[26];
      for (int ctr = 0; ctr < 26; ctr++)
         chars[ctr] = (char) (ctr + 0x0061);

      object obj = Activator.CreateInstance(typeof(string),
                                            new object[] { chars, 13, 10 } );
      Console.WriteLine(obj);
   }
}
// The example displays the following output:
//       nopqrstuvw
open System

// Initialize array of characters from a to z.
let chars = [| 'a' .. 'z' |]

let obj = Activator.CreateInstance(typeof<string>, chars[13..22])

printfn $"{obj}"

// The example displays the following output:
//       nopqrstuvw
Module Example
   Public Sub Main()
      ' Initialize array of characters from a to z.
      Dim chars(25) As Char 
      For ctr As Short = 0 To 25
         chars(ctr) = ChrW(ctr + &h0061)
      Next 
      Dim obj As Object = Activator.CreateInstance(GetType(String),
                                                   { chars, 13, 10 })
      Console.WriteLine(obj)                                          
   End Sub
End Module
' The example displays the following output:
'       nopqrstuvw

Nell'esempio seguente viene creata una matrice frastagliata i cui elementi sono argomenti da passare a un costruttore String. L'esempio passa quindi ogni matrice al metodo CreateInstance(Type, Object[]) per richiamare il costruttore stringa appropriato.

using System;

public class Example
{
   public static void Main()
   {
      char[] characters = { 'a', 'b', 'c', 'd', 'e', 'f' };
      object[][] arguments = new object[3][] { new object[] { characters },
                                               new object[] { characters, 1, 4 },
                                               new object[] { characters[1], 20 } };

      for (int ctr = 0; ctr <= arguments.GetUpperBound(0); ctr++) {
         object[] args = arguments[ctr];
         object result = Activator.CreateInstance(typeof(string), args);
         Console.WriteLine("{0}: {1}", result.GetType().Name, result);
      }
   }
}
// The example displays the following output:
//    String: abcdef
//    String: bcde
//    String: bbbbbbbbbbbbbbbbbbbb
open System

let chars = [| 'a' .. 'f' |]

let arguments =
    [| chars
       chars[1..4]
       Array.create 20 chars[1] |]

for args in arguments do
    let result =
        Activator.CreateInstance(typeof<string>, args)

    printfn $"{result.GetType().Name}: {result}"

// The example displays the following output:
//    String: abcdef
//    String: bcde
//    String: bbbbbbbbbbbbbbbbbbbb
Module Example
   Public Sub Main()
      Dim characters() As Char = { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c }
      Dim arguments()() As Object = new Object(2)() { New Object() { characters },
                                                      New Object() { characters, 1, 4 },
                                                      New Object() { characters(1), 20 } }

      For ctr As Integer = 0 To arguments.GetUpperBound(0)
         Dim args() As Object = arguments(ctr)
         Dim result As Object = Activator.CreateInstance(GetType(String), args)
         Console.WriteLine("{0}: {1}", result.GetType().Name, result)
      Next
   End Sub
End Module
' The example displays the following output:
'       String: abcdef
'       String: bcde
'       String: bbbbbbbbbbbbbbbbbbbb

Commenti

Il costruttore da richiamare deve essere accessibile e deve fornire la corrispondenza più specifica con l'elenco di argomenti specificato.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi non pubblici è limitato al set di concessioni del chiamante o a un subset corrispondente. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(Type, Boolean)

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

public:
 static System::Object ^ CreateInstance(Type ^ type, bool nonPublic);
public static object? CreateInstance (Type type, bool nonPublic);
public static object CreateInstance (Type type, bool nonPublic);
static member CreateInstance : Type * bool -> obj
Public Shared Function CreateInstance (type As Type, nonPublic As Boolean) As Object

Parametri

type
Type

Tipo di oggetto da creare.

nonPublic
Boolean

true se un costruttore pubblico o non pubblico senza parametri può corrispondere; false se solo un costruttore pubblico senza parametri può corrispondere.

Restituisce

Riferimento all'oggetto appena creato o null per le istanze di Nullable<T>.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore pubblico corrispondente.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Commenti

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi e membri non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi e i membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(String, String)

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo il cui nome è specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName);
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle

Parametri

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per le istanze di Nullable<T>.

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Non è possibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Esempio

Nell'esempio seguente viene definita una classe denominata Person in un assembly denominato PersonInfo. Si noti che la classe Person ha due costruttori, uno dei quali senza parametri.

using System;

public class Person
{
   private string _name;

   public Person()
   { }

   public Person(string name)
   {
      this._name = name;
   }

   public string Name
   { get { return this._name; }
     set { this._name = value; } }

   public override string ToString()
   {
      return this._name;
   }
}
type Person(name) =
    member val Name = name with get, set

    override this.ToString() = this.Name

    new () = Person Unchecked.defaultof<string>
Public Class Person
   Private _name As String
   
   Public Sub New()
   End Sub
   
   Public Sub New(name As String)
      Me._name = name
   End Sub
   
   Public Property Name As String
      Get
         Return Me._name
      End Get
      Set
         Me._name = value
      End Set
   End Property
   
   Public Overrides Function ToString() As String
      Return Me._name
   End Function
End Class

Nell'esempio seguente viene chiamato il metodo CreateInstance(String, String) per creare un'istanza della classe Person. Richiede un riferimento a PersonInfo.dll da aggiungere al progetto. Poiché il metodo CreateInstance(String, String) chiama il costruttore senza parametri della classe Person, nell'esempio viene assegnato un valore alla relativa proprietà Name.

using System;
using System.Runtime.Remoting;

public class Example
{
   public static void Main()
   {
      ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
      Person p = (Person) handle.Unwrap();
      p.Name = "Samuel";
      Console.WriteLine(p);
   }
}
// The example displays the following output:
//        Samuel
open System

let handle = Activator.CreateInstance("PersonInfo", "Person")
let p = handle.Unwrap() :?> Person
p.Name <- "Samuel"
printfn $"{p}"

// The example displays the following output:
//        Samuel
Imports System.Runtime.Remoting

Module Example
   Public Sub Main()
      Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
      Dim p As Person = CType(handle.Unwrap(), Person)
      p.Name = "Samuel"
      Console.WriteLine(p)
   End Sub
End Module
' The example displays the following output:
'       Samuel

Tuttavia, CreateInstance viene spesso chiamato per creare un'istanza di un tipo che supera i limiti del computer o che non è noto in fase di progettazione. In questo caso, non è possibile includere un riferimento all'assembly nel progetto e non è possibile effettuare chiamate con associazione anticipata ai membri del tipo. Per ovviare a questa limitazione, nell'esempio seguente viene utilizzato il metodo CreateInstance insieme alla reflection per assegnare un valore alla proprietà Name dell'oggetto Person e visualizzarne il valore.

using System;
using System.Reflection;
using System.Runtime.Remoting;

public class Example
{
   public static void Main()
   {
      ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
      object p = handle.Unwrap();
      Type t = p.GetType();
      PropertyInfo prop = t.GetProperty("Name");
      if (prop != null)
         prop.SetValue(p, "Samuel");

      MethodInfo method = t.GetMethod("ToString");
      object retVal = method.Invoke(p, null);
      if (retVal != null)
         Console.WriteLine(retVal);
   }
}
// The example displays the following output:
//        Samuel
open System

let handle =
    Activator.CreateInstance("PersonInfo", "Person")

let p = handle.Unwrap()
let t = p.GetType()
let prop = t.GetProperty "Name"

if not (isNull prop) then
    prop.SetValue(p, "Samuel")

let method = t.GetMethod "ToString"
let retVal = method.Invoke(p, null)

if not (isNull retVal) then
    printfn $"{retVal}"

// The example displays the following output:
//        Samuel
Imports System.Reflection
Imports System.Runtime.Remoting

Module Example
   Public Sub Main()
      Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
      Dim p As Object = handle.Unwrap()
      Dim t As Type = p.GetType()
      Dim prop As PropertyInfo = t.GetProperty("Name")
      if Not prop Is Nothing Then
         prop.SetValue(p, "Samuel")
      End If   
      Dim method As MethodInfo = t.GetMethod("ToString")
      Dim retVal As Object = method.Invoke(p, Nothing) 
      If Not retVal Is Nothing Then
         Console.WriteLine(retVal)
      End If
   End Sub
End Module
' The example displays the following output:
'       Samuel

Commenti

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

assemblyName può essere uno dei seguenti:

  • Nome semplice di un assembly, senza il percorso o l'estensione di file. Ad esempio, è necessario specificare TypeExtensions per un assembly il cui percorso e nome sono .\bin\TypeExtensions.dll.

  • Nome completo di un assembly firmato, costituito dal nome semplice, dalla versione, dalle impostazioni cultura e dal token di chiave pubblica; Ad esempio, "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".

Per altre informazioni su come Common Language Runtime identifica e carica gli assembly, vedere Come il runtime individua gli assembly. Per informazioni sull'uso del file di configurazione dell'applicazione per definire i percorsi degli assembly, vedere Specifica del percorso di un assembly. Se viene trovato assemblyName, viene caricato nel contesto predefinito.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per creare tipi non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi non pubblici è limitato al set di concessioni del chiamante o a un subset corrispondente. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(ActivationContext, String[])

Crea un'istanza del tipo designato dall'oggetto ActivationContext specificato e attivato con i dati di attivazione personalizzati specificati.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(ActivationContext ^ activationContext, cli::array <System::String ^> ^ activationCustomData);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (ActivationContext activationContext, string[] activationCustomData);
static member CreateInstance : ActivationContext * string[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (activationContext As ActivationContext, activationCustomData As String()) As ObjectHandle

Parametri

activationContext
ActivationContext

Oggetto contesto di attivazione che specifica l'oggetto da creare.

activationCustomData
String[]

Matrice di stringhe Unicode che contengono dati di attivazione personalizzati.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per le istanze di Nullable<T>.

Commenti

Utilizzare il metodo ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Il contesto di attivazione viene usato durante l'attivazione basata su manifesto per configurare i criteri di dominio e per fornire un modello di sicurezza basato su applicazioni. La classe ActivationContext contiene un oggetto ApplicationIdentity che fornisce l'accesso al manifesto dell'applicazione. Per altre informazioni, vedere la classe ApplicationSecurityManager.

Vedi anche

Si applica a

CreateInstance(Type)

Origine:
Activator.cs
Origine:
Activator.cs
Origine:
Activator.cs

Crea un'istanza del tipo specificato utilizzando il costruttore senza parametri del tipo.

public:
 static System::Object ^ CreateInstance(Type ^ type);
public static object CreateInstance (Type type);
public static object? CreateInstance (Type type);
static member CreateInstance : Type -> obj
Public Shared Function CreateInstance (type As Type) As Object

Parametri

type
Type

Tipo di oggetto da creare.

Restituisce

Riferimento all'oggetto appena creato o null per le istanze di Nullable<T>.

Eccezioni

type è null.

type non è un RuntimeType.

-o-

type è un tipo generico aperto, ovvero la proprietà ContainsGenericParameters restituisce true.

type non può essere un TypeBuilder.

-o-

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

-o-

L'assembly che contiene type è un assembly dinamico creato con Save.

Il costruttore chiamato genera un'eccezione.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile , intercettare invece l'eccezione della classe di base MemberAccessException.

Impossibile creare un'istanza di una classe astratta oppure questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

Non è stato trovato alcun costruttore pubblico corrispondente.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile , intercettare invece l'eccezione della classe di base MissingMemberException.

type è un oggetto COM, ma l'identificatore di classe usato per ottenere il tipo non è valido oppure la classe identificata non è registrata.

type non è un tipo valido.

Esempio

Nell'esempio di codice seguente viene illustrato come chiamare il metodo CreateInstance(Type). Vengono create istanze di diversi tipi e vengono visualizzati i relativi valori predefiniti.

using namespace System;

ref class DynamicInstanceList
{
private:
    static String^ instanceSpec = "System.EventArgs;System.Random;" +
        "System.Exception;System.Object;System.Version";

public:
    static void Main()
    {
        array<String^>^ instances = instanceSpec->Split(';');
        Array^ instlist = Array::CreateInstance(Object::typeid, instances->Length);
        Object^ item;

        for (int i = 0; i < instances->Length; i++)
        {
            // create the object from the specification string
            Console::WriteLine("Creating instance of: {0}", instances[i]);
            item = Activator::CreateInstance(Type::GetType(instances[i]));
            instlist->SetValue(item, i);
        }
        Console::WriteLine("\nObjects and their default values:\n");
        for each (Object^ o in instlist)
        {
            Console::WriteLine("Type:     {0}\nValue:    {1}\nHashCode: {2}\n",
                o->GetType()->FullName, o->ToString(), o->GetHashCode());
        }
    }
};

int main()
{
    DynamicInstanceList::Main();
}

// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type:     System.EventArgs
// Value:    System.EventArgs
// HashCode: 46104728
//
// Type:     System.Random
// Value:    System.Random
// HashCode: 12289376
//
// Type:     System.Exception
// Value:    System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type:     System.Object
// Value:    System.Object
// HashCode: 30015890
//
// Type:     System.Version
// Value:    0.0
// HashCode: 1048575
using System;

class DynamicInstanceList
{
    private static string instanceSpec = "System.EventArgs;System.Random;" +
        "System.Exception;System.Object;System.Version";

    public static void Main()
    {
        string[] instances = instanceSpec.Split(';');
        Array instlist = Array.CreateInstance(typeof(object), instances.Length);
        object item;
        for (int i = 0; i < instances.Length; i++)
        {
            // create the object from the specification string
            Console.WriteLine("Creating instance of: {0}", instances[i]);
            item = Activator.CreateInstance(Type.GetType(instances[i]));
            instlist.SetValue(item, i);
        }
        Console.WriteLine("\nObjects and their default values:\n");
        foreach (object o in instlist)
        {
            Console.WriteLine("Type:     {0}\nValue:    {1}\nHashCode: {2}\n",
                o.GetType().FullName, o.ToString(), o.GetHashCode());
        }
    }
}

// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type:     System.EventArgs
// Value:    System.EventArgs
// HashCode: 46104728
//
// Type:     System.Random
// Value:    System.Random
// HashCode: 12289376
//
// Type:     System.Exception
// Value:    System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type:     System.Object
// Value:    System.Object
// HashCode: 30015890
//
// Type:     System.Version
// Value:    0.0
// HashCode: 1048575
open System

let instanceSpec =
    "System.EventArgs;System.Random;System.Exception;System.Object;System.Version"

let instances = instanceSpec.Split ';'
let instlist = Array.zeroCreate instances.Length
let mutable item = obj ()

for i = 0 to instances.Length - 1 do
    // create the object from the specification string
    printfn $"Creating instance of: {instances.[i]}"
    item <- Activator.CreateInstance(Type.GetType instances.[i])
    instlist.[i] <- item

printfn "\nObjects and their default values:\n"

for o in instlist do
    printfn $"Type:     {o.GetType().FullName}\nValue:    {o}\nHashCode: {o.GetHashCode()}\n"


// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type:     System.EventArgs
// Value:    System.EventArgs
// HashCode: 46104728
//
// Type:     System.Random
// Value:    System.Random
// HashCode: 12289376
//
// Type:     System.Exception
// Value:    System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type:     System.Object
// Value:    System.Object
// HashCode: 30015890
//
// Type:     System.Version
// Value:    0.0
// HashCode: 1048575
Class DynamicInstanceList
    Private Shared instanceSpec As String = "System.EventArgs;System.Random;" + _
        "System.Exception;System.Object;System.Version"

    Public Shared Sub Main()
        Dim instances() As String = instanceSpec.Split(";")
        Dim instlist As Array = Array.CreateInstance(GetType(Object), instances.Length)
        Dim item As Object

        For i As Integer = 0 To instances.Length -1
            ' create the object from the specification string
            Console.WriteLine("Creating instance of: {0}", instances(i))
            item = Activator.CreateInstance(Type.GetType(instances(i)))
            instlist.SetValue(item, i)
        Next i
        Console.WriteLine(Environment.NewLine + "Objects and their default values:" + Environment.NewLine)
        For Each o As Object In instlist
            Console.WriteLine("Type:     {0}" + Environment.NewLine + "Value:    {1}" + _
                Environment.NewLine + "HashCode: {2}" + Environment.NewLine, _
                o.GetType().FullName, o.ToString(), o.GetHashCode())
        Next o
    End Sub
End Class

' This program will display output similar to the following:
'
' Creating instance of: System.EventArgs
' Creating instance of: System.Random
' Creating instance of: System.Exception
' Creating instance of: System.Object
' Creating instance of: System.Version
'
' Objects and their default values:
'
' Type:     System.EventArgs
' Value:    System.EventArgs
' HashCode: 46104728
'
' Type:     System.Random
' Value:    System.Random
' HashCode: 12289376
'
' Type:     System.Exception
' Value:    System.Exception: Exception of type 'System.Exception' was thrown.
' HashCode: 55530882
'
' Type:     System.Object
' Value:    System.Object
' HashCode: 30015890
'
' Type:     System.Version
' Value:    0.0
' HashCode: 1048575

Commenti

Il costruttore da richiamare deve essere accessibile.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a tipi non pubblici se al chiamante è stato concesso ReflectionPermission con il flag ReflectionPermissionFlag.RestrictedMemberAccess e se il set di concessioni dell'assembly che contiene i tipi non pubblici è limitato al set di concessioni del chiamante o a un subset corrispondente. Vedere considerazioni sulla sicurezza di per Reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(ActivationContext)

Crea un'istanza del tipo designato dall'oggetto ActivationContext specificato.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(ActivationContext ^ activationContext);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (ActivationContext activationContext);
static member CreateInstance : ActivationContext -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (activationContext As ActivationContext) As ObjectHandle

Parametri

activationContext
ActivationContext

Oggetto contesto di attivazione che specifica l'oggetto da creare.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per le istanze di Nullable<T>.

Commenti

Utilizzare il metodo ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Il contesto di attivazione viene usato durante l'attivazione basata su manifesto per configurare i criteri di dominio e per fornire un modello di sicurezza basato su applicazioni. La classe ActivationContext contiene un oggetto ApplicationIdentity che fornisce l'accesso al manifesto dell'applicazione. Per altre informazioni, vedere la classe ApplicationSecurityManager.

Vedi anche

Si applica a

CreateInstance(AppDomain, String, String)

Crea un'istanza del tipo il cui nome viene specificato nel dominio remoto specificato, utilizzando l'assembly denominato e il costruttore senza parametri.

public:
 static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, System::String ^ typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName);
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName);
static member CreateInstance : AppDomain * string * string -> System.Runtime.Remoting.ObjectHandle
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName As String, typeName As String) As ObjectHandle

Parametri

domain
AppDomain

Dominio remoto in cui viene creato il tipo denominato typeName.

assemblyName
String

Nome dell'assembly in cui viene cercato il tipo denominato typeName. Se assemblyName è null, viene eseguita la ricerca dell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

Restituisce

Handle che deve essere decomistato per accedere all'oggetto appena creato o null per le istanze di Nullable<T>.

Attributi

Eccezioni

typeName o domain è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

typeName non è stato trovato in assemblyName.

assemblyName non è stato trovato.

Il chiamante non dispone dell'autorizzazione per chiamare questo costruttore.

Impossibile creare un'istanza di un tipo astratto.

-o-

Questo membro è stato richiamato con un meccanismo di associazione tardiva.

Il costruttore, richiamato tramite reflection, ha generato un'eccezione.

Il tipo COM non è stato ottenuto tramite GetTypeFromProgID o GetTypeFromCLSID.

La creazione di tipi TypedReference, ArgIterator, Voide RuntimeArgumentHandle o matrici di tali tipi non è supportata.

assemblyName non è un assembly valido.

-o-

Common Language Runtime (CLR) versione 2.0 o successiva è attualmente caricata e assemblyName è stata compilata per una versione di CLR successiva alla versione attualmente caricata. Si noti che .NET Framework versioni 2.0, 3.0 e 3.5 usano tutti CLR versione 2.0.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

-o-

Il nome dell'assembly o la codebase non è valido.

Commenti

Usare CreateInstance quando un host deve eseguire codice in un dominio applicazione con autorizzazioni di sicurezza limitate.

Usare ObjectHandle.Unwrap per annullare il wrapping del valore restituito.

Si applica a

CreateInstance<T>()

Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs
Origine:
Activator.RuntimeType.cs

Crea un'istanza del tipo designato dal parametro di tipo generico specificato, usando il costruttore senza parametri.

public:
generic <typename T>
 static T CreateInstance();
public static T CreateInstance<T> ();
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T

Parametri di tipo

T

Tipo da creare.

Restituisce

T

Riferimento all'oggetto appena creato o null per le istanze di Nullable<T>.

Eccezioni

Impossibile creare un'istanza di una classe astratta oppure il tipo specificato per T non dispone di un costruttore senza parametri.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile , intercettare invece l'eccezione della classe di base MissingMemberException.

Commenti

Il metodo generico CreateInstance<T>() viene usato dai compilatori per implementare l'istanza dei tipi specificati dai parametri di tipo. Ad esempio, nel metodo generico seguente, l'implementazione di new T() (gcnew T() in C++) usa il metodo generico CreateInstance<T>().

public:
    generic <typename T> where T:gcnew()
    static T Bar()
    {
        return gcnew T();
    }
public static T Factory<T>() where T : new()
{
    return new T();
}
let factory<'T when 'T : (new: unit -> 'T)> =
    new 'T()
Public Shared Function Factory(Of T As New)() As T
    Return New T()
End Function

In generale, non esiste alcun uso per il metodo generico CreateInstance<T>() nel codice dell'applicazione, perché il tipo deve essere noto in fase di compilazione. Se il tipo è noto in fase di compilazione, è possibile usare la normale sintassi di creazione di istanze ( operatorenew in C#, New in Visual Basic, gcnew in C++). Se il tipo non è noto in fase di compilazione, è possibile chiamare un overload non generico di CreateInstance.

Non sono presenti overload del metodo generico CreateInstance<T>() che accettano elenchi di argomenti, perché gli overload non generici di CreateInstance forniscono già una risoluzione del costruttore con associazione tardiva.

Si applica a