Activator.CreateInstance Metodo

Definizione

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente ai parametri specificati.

Overload

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

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

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

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

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

Crea un'istanza del tipo il cui nome è specificato, usando l'assembly denominato e il costruttore più adatto ai parametri specificati.

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

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente ai parametri specificati.

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

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente ai parametri specificati.

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

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente ai parametri specificati.

CreateInstance(String, String, Object[])

Crea un'istanza del tipo il cui nome è specificato, usando 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, usando l'assembly denominato e il costruttore più adatto ai parametri specificati.

CreateInstance(Type, Object[])

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente ai parametri specificati.

CreateInstance(Type, Boolean)

Crea un'istanza del tipo specificato usando il costruttore senza parametri di tale tipo.

CreateInstance(String, String)

Crea un'istanza del tipo il cui nome è specificato, usando 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 usando il costruttore senza parametri di tale 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 è specificato nel dominio remoto specificato, usando l'assembly denominato e il costruttore senza parametri.

CreateInstance<T>()

Crea un'istanza del tipo designato dal parametro del 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 è specificato nel dominio remoto specificato, usando l'assembly denominato e il costruttore che corrisponde maggiormente 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'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 è uguale a zero, verrà eseguita una ricerca di costruttori pubblici con distinzione tra maiuscole e minuscole.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore typeName. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, corrisponde a una matrice che contiene un unico oggetto UrlAttribute. L'oggetto UrlAttribute specifica l'URL necessario per attivare un oggetto remoto.

securityAttributes
Evidence

Informazioni usate per prendere decisioni relative ai criteri di sicurezza e per concedere autorizzazioni di codice.

Restituisce

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

Attributi

Eccezioni

domain o typeName è null.

Non è stato trovato alcun costruttore corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly 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 è specificato nel dominio remoto specificato, usando l'assembly denominato e il costruttore che corrisponde maggiormente 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'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 è uguale a zero, verrà eseguita una ricerca di costruttori pubblici con distinzione tra maiuscole e minuscole.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore typeName. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

Restituisce

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

Attributi

Eccezioni

domain o typeName è null.

Non è stato trovato alcun costruttore corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly 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[])

Crea un'istanza del tipo il cui nome è specificato, usando l'assembly denominato e il costruttore più adatto 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'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 è uguale a zero, verrà eseguita una ricerca di costruttori pubblici con distinzione tra maiuscole e minuscole.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore typeName. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

Restituisce

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

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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 per la 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[])

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente 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

Il tipo di oggetto da creare.

bindingAttr
BindingFlags

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

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore type. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

Restituisce

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

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta o 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessioni dei tipi e dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per la 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)

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente 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

Il tipo di oggetto da creare.

bindingAttr
BindingFlags

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

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore type. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

Restituisce

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

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta o 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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 per la 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[])

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente 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

Il tipo di oggetto da creare.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero il costruttore senza parametri.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

Restituisce

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

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta o 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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. Vedere Considerazioni sulla sicurezza per la 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[])

Crea un'istanza del tipo il cui nome è specificato, usando 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

Restituisce

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

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta o 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

activationAttributes non è un oggetto UrlAttribute.

matrice.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly non è valido.

Il costruttore richiamato genera un'eccezione.

-oppure-

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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessioni dei tipi non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per la 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, usando l'assembly denominato e il costruttore più adatto 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'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 è uguale a zero, verrà eseguita una ricerca di costruttori pubblici con distinzione tra maiuscole e minuscole.

binder
Binder

Oggetto che usa bindingAttr e args per cercare e identificare il costruttore typeName. Se binder è null, verrà usato il binder predefinito.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero 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, per il thread corrente verrà usato l'oggetto CultureInfo.

activationAttributes
Object[]

Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto.

Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.

securityInfo
Evidence

Informazioni usate per prendere decisioni relative ai criteri di sicurezza e per concedere autorizzazioni di codice.

Restituisce

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

Attributi

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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 per la reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(Type, Object[])

Crea un'istanza del tipo specificato utilizzando il costruttore che corrisponde maggiormente 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

Il tipo di oggetto da creare.

args
Object[]

Una matrice di argomenti che corrispondono per numero, ordine e tipo ai parametri del costruttore da richiamare. Se args è una matrice vuota oppure null, viene chiamato il costruttore che non accetta parametri, ovvero il costruttore senza parametri.

Restituisce

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

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

-oppure-

Il costruttore che corrisponde maggiormente a args ha argomenti varargs.

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il 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, .

Non è possibile creare un'istanza di una classe astratta o 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 CreateInstance(Type, Object[]) metodo per creare un String oggetto . Chiama il costruttore per creare un'istanza String.String(Char[], Int32, Int32) 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 irregolare i cui elementi sono argomenti da passare a un String costruttore. L'esempio passa quindi ogni matrice al CreateInstance(Type, Object[]) metodo 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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. Vedere Considerazioni sulla sicurezza per la reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(Type, Boolean)

Crea un'istanza del tipo specificato usando il costruttore senza parametri di tale 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

Il tipo di oggetto da creare.

nonPublic
Boolean

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

Restituisce

Riferimento all'oggetto appena creato o null alle Nullable<T> istanze.

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta o 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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 per la reflection. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

CreateInstance(String, String)

Crea un'istanza del tipo il cui nome è specificato, usando 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

Restituisce

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

Eccezioni

typeName è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Non è possibile creare un'istanza di una classe astratta 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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly non è valido.

Esempio

Nell'esempio seguente viene definita una classe denominata Person in un assembly denominato PersonInfo. Si noti che la classe Person dispone di 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 che venga aggiunto un riferimento a PersonInfo.dll al progetto. Poiché il CreateInstance(String, String) metodo chiama il costruttore senza parametri della Person classe, nell'esempio viene assegnato un valore alla relativa Name proprietà.

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 eseguire 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à Person dell'oggetto Name e per 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ò corrispondere a uno dei seguenti nomi:

  • Il nome semplice di un assembly, senza il relativo percorso o estensione del file. Ad esempio, si specificherà 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 assemblyName viene trovato, viene caricato nel contesto predefinito.

Nota

A partire da .NET Framework 2.0, questo metodo può essere usato per creare tipi non pubblici se il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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. Vedere Considerazioni sulla sicurezza per la 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 di contesto di attivazione che specifica l'oggetto da creare.

activationCustomData
String[]

Matrice di stringhe Unicode contenente i dati di attivazione personalizzati.

Restituisce

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

Commenti

Usare il metodo per annullare il ObjectHandle.Unwrap 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 ActivationContext classe contiene un ApplicationIdentity oggetto che fornisce l'accesso al manifesto dell'applicazione. Per altre informazioni, vedere la classe ApplicationSecurityManager.

Vedi anche

Si applica a

CreateInstance(Type)

Crea un'istanza del tipo specificato usando il costruttore senza parametri di tale 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

Il tipo di oggetto da creare.

Restituisce

Riferimento all'oggetto appena creato o null alle Nullable<T> istanze.

Eccezioni

type è null.

type non è un oggetto RuntimeType.

-oppure-

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

type non può essere un TypeBuilder.

-oppure-

La creazione di tipi TypedReference, ArgIterator, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

-oppure-

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

Il costruttore chiamato genera un'eccezione.

Il chiamante non ha l'autorizzazione necessaria per chiamare il 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, .

Non è possibile creare un'istanza di una classe astratta o 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 CreateInstance(Type) metodo . 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 il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag 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. Vedere Considerazioni sulla sicurezza per la 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 di contesto di attivazione che specifica l'oggetto da creare.

Restituisce

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

Commenti

Usare il metodo per annullare il ObjectHandle.Unwrap 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 ActivationContext classe contiene un ApplicationIdentity oggetto 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 è specificato nel dominio remoto specificato, usando 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 nel quale viene ricercato il tipo denominato typeName. Se assemblyName è null, viene effettuata la ricerca nell'assembly in esecuzione.

typeName
String

Nome completo del tipo di cui creare un'istanza.

Restituisce

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

Attributi

Eccezioni

typeName o domain è null.

Non è stato trovato alcun costruttore pubblico corrispondente.

Non è possibile trovare typename in assemblyName.

Il parametro assemblyName non è stato trovato.

Il chiamante non ha l'autorizzazione necessaria per chiamare il costruttore.

Impossibile creare un'istanza di un tipo astratto.

-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, Void e RuntimeArgumentHandle, o di matrici di questi tipi, non è supportata.

assemblyName non è un assembly valido.

-oppure-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime (CLR) e assemblyName è stato compilato per una versione di CLR successiva a quella attualmente caricata. Si noti che le versioni 2.0, 3.0 e 3.5 di .NET Framework usano tutte CLR versione 2.0.

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

-oppure-

La codebase o il nome dell'assembly 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>()

Crea un'istanza del tipo designato dal parametro del 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 alle Nullable<T> istanze.

Eccezioni

Non è possibile creare un'istanza di una classe astratta oppure il tipo specificato per T non ha 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 CreateInstance<T>() metodo generico 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 CreateInstance<T>() metodo generico .

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 CreateInstance<T>() metodo generico 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 (new operatore 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 CreateInstance<T>() metodo generico che accettano elenchi di argomenti, perché gli overload non generici di CreateInstance forniscono già la risoluzione del costruttore con associazione tardiva.

Si applica a