TypeConverter Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una soluzione unica per la conversione di tipi di valori in altri tipi, oltre che per l'accesso a sottoproprietà e valori standard.
public ref class TypeConverter
public class TypeConverter
[System.Runtime.InteropServices.ComVisible(true)]
public class TypeConverter
type TypeConverter = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeConverter = class
Public Class TypeConverter
- Ereditarietà
-
TypeConverter
- Derivato
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato come creare un'istanza di un convertitore di tipi e associarla a una classe . La classe che implementa il convertitore, MyClassConverter
, deve ereditare dalla TypeConverter classe .
public:
[TypeConverter(Sample::MyClassConverter::typeid)]
ref class MyClass
{
// Insert code here.
};
[TypeConverter(typeof(MyClassConverter))]
public class MyClass {
// Insert code here.
}
<TypeConverter(GetType(MyClassConverter))> _
Public Class Class1
' Insert code here.
End Class
Quando si dispone di una proprietà con un'enumerazione, verificare se un valore di enumerazione è valido prima di impostare la proprietà . L'esempio di codice successivo richiede che sia stata dichiarata un'enumerazione denominata MyPropertyEnum
.
public:
property MyPropertyEnum MyProperty
{
void set( MyPropertyEnum value )
{
// Checks to see if the value passed is valid.
if ( !TypeDescriptor::GetConverter( MyPropertyEnum::typeid )->IsValid( value ) )
{
throw gcnew ArgumentException;
}
// The value is valid. Insert code to set the property.
}
}
public MyPropertyEnum MyProperty {
set {
// Checks to see if the value passed is valid.
if (!TypeDescriptor.GetConverter(typeof(MyPropertyEnum)).IsValid(value)) {
throw new ArgumentException();
}
// The value is valid. Insert code to set the property.
}
}
Public WriteOnly Property MyProperty() As MyPropertyEnum
Set
' Checks to see if the value passed is valid.
If Not TypeDescriptor.GetConverter(GetType(MyPropertyEnum)).IsValid(value) Then
Throw New ArgumentException()
End If
' The value is valid. Insert code to set the property.
End Set
End Property
Un altro utilizzo comune del convertitore di tipi consiste nel convertire un oggetto in una stringa. Nell'esempio di codice seguente viene stampato il nome dell'oggetto Color archiviato nella variabile c
.
Color c = Color::Red;
Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
Color c = Color.Red;
Console.WriteLine(TypeDescriptor.GetConverter(typeof(Color)).ConvertToString(c));
Dim c As Color = Color.Red
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))
È anche possibile usare un convertitore di tipi per convertire un valore dal nome, come illustrato nell'esempio di codice successivo.
Color c = (Color)(TypeDescriptor::GetConverter( Color::typeid )->ConvertFromString( "Red" ));
Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");
Dim c As Color = CType(TypeDescriptor.GetConverter(GetType(Color)).ConvertFromString("Red"), Color)
Nell'esempio di codice seguente è possibile utilizzare un convertitore di tipi per stampare il set di valori standard supportati dall'oggetto.
for each ( Color c in TypeDescriptor::GetConverter( Color::typeid )->GetStandardValues() )
{
Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
}
foreach(Color c in TypeDescriptor.GetConverter(typeof(Color)).GetStandardValues()) {
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
}
Dim c As Color
For Each c In TypeDescriptor.GetConverter(GetType(Color)).GetStandardValues()
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))
Next c
Commenti
Il tipo più comune di convertitore è quello che converte in e da una rappresentazione di testo. Il convertitore di tipi per una classe è associato alla classe con un oggetto TypeConverterAttribute. A meno che questo attributo non venga sottoposto a override, tutte le classi che ereditano da questa classe usano lo stesso convertitore di tipi della classe base.
Nota
Per scopi di sistema di tipi generali, non accedere direttamente a un convertitore di tipi. Accedere invece al convertitore appropriato usando TypeDescriptor. Per altre informazioni, vedere gli esempi di codice forniti.
Tuttavia, quando si usa XAML, un processore XAML cerca TypeConverterAttribute direttamente , anziché passare attraverso TypeDescriptor. Per i casi in cui si desidera un'istanza TypeDescriptor dal codice o in cui si crea un'istanza condivisa nelle risorse WPF, è accettabile crearla direttamente senza fare riferimento TypeDescriptor o altro supporto di reflection e sistema di tipi.
Le classi derivate da TypeConverter vengono spesso referenziate come parte di come un processore XAML converte un attributo o un valore di testo di inizializzazione dal markup (che è intrinsecamente una stringa) e genera un oggetto per una rappresentazione in fase di esecuzione. Gli autori di tipi personalizzati che intendono supportare un comportamento di conversione dei tipi per XAML implementano in genere una TypeConverter classe che supporta il proprio comportamento univoco ConvertFrom
da una stringa. Questo comportamento consente la conversione del tipo dalla stringa fornita come valore dell'attributo XAML e fornisce un processore XAML con il supporto necessario per creare un oggetto dalla stringa, in modo che l'oggetto possa essere prodotto in un oggetto grafico analizzato. I tipi o i membri personalizzati dei tipi personalizzati sono indicati applicando TypeConverterAttribute alle definizioni, con l'attributo che fa riferimento all'implementazione personalizzata TypeConverter . Per altre informazioni, vedere Convertitori di tipi per la panoramica di XAML.
Note per gli eredi
Ereditare da TypeConverter per implementare i propri requisiti di conversione. Quando si eredita da questa classe, è possibile eseguire l'override dei metodi seguenti:
Per supportare la conversione di tipi personalizzati, eseguire l'override dei CanConvertFrom(ITypeDescriptorContext, Type)metodi , CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)e ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) .
Per convertire i tipi che devono ricreare l'oggetto per modificarne il valore, eseguire l'override dei CreateInstance(ITypeDescriptorContext, IDictionary) metodi e GetCreateInstanceSupported(ITypeDescriptorContext) .
Per convertire i tipi che supportano le proprietà, eseguire l'override dei GetProperties(ITypeDescriptorContext, Object, Attribute[]) metodi e GetPropertiesSupported(ITypeDescriptorContext) . Se la classe da convertire non dispone di proprietà ed è necessario implementare le proprietà, è possibile usare la TypeConverter.SimplePropertyDescriptor classe come base per implementare i descrittori di proprietà. Quando si eredita da TypeConverter.SimplePropertyDescriptor, è necessario eseguire l'override dei GetValue(Object) metodi e SetValue(Object, Object) .
Per convertire i tipi che supportano valori standard, eseguire l'override dei GetStandardValues(ITypeDescriptorContext)metodi , GetStandardValuesExclusive(ITypeDescriptorContext)GetStandardValuesSupported(ITypeDescriptorContext) e IsValid(ITypeDescriptorContext, Object) .
Nota: il tipo derivato potrebbe essere contrassegnato come internal
o private
, ma è possibile creare un'istanza del tipo con la TypeDescriptor classe . Non scrivere codice non sicuro presupponendo che il chiamante sia attendibile. Si supponga invece che i chiamanti possano creare istanze del tipo in attendibilità parziale.
Per altre informazioni sui convertitori di tipi per scopi generali (non XAML), vedere Procedura: Implementare un convertitore di tipi o una conversione di tipi generalizzati.
Costruttori
TypeConverter() |
Inizializza una nuova istanza della classe TypeConverter. |
Metodi
CanConvertFrom(ITypeDescriptorContext, Type) |
Restituisce un valore che indica se il convertitore può convertire un oggetto del tipo specificato nel tipo di questo convertitore, usando il contesto specificato. |
CanConvertFrom(Type) |
Indica se questo convertitore può convertire un oggetto del tipo specificato nel tipo di questo convertitore. |
CanConvertTo(ITypeDescriptorContext, Type) |
Restituisce un valore che indica se il convertitore può convertire l'oggetto nel tipo specificato usando il contesto specificato. |
CanConvertTo(Type) |
Indica se questo convertitore può convertire l'oggetto nel tipo specificato. |
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Converte l'oggetto specificato nel tipo del convertitore mediante il contesto e le informazioni sulle impostazioni cultura specificati. |
ConvertFrom(Object) |
Converte il valore specificato nel tipo di questo convertitore. |
ConvertFromInvariantString(ITypeDescriptorContext, String) |
Converte la stringa specificata nel tipo di questo convertitore, utilizzando le impostazioni cultura inglesi e il contesto specificato. |
ConvertFromInvariantString(String) |
Converte la stringa specificata nel tipo di questo convertitore, utilizzando le impostazioni cultura invarianti. |
ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Converte il testo specificato in un oggetto, utilizzando il contesto specificato e le informazioni sulle impostazioni cultura. |
ConvertFromString(ITypeDescriptorContext, String) |
Converte il testo specificato in un oggetto, utilizzando il contesto specificato. |
ConvertFromString(String) |
Converte il testo specificato in un oggetto. |
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Converte l'oggetto valore specificato nel tipo del convertitore mediante il contesto e le informazioni sulle impostazioni cultura specificati. |
ConvertTo(Object, Type) |
Converte l'oggetto valore specificato nel tipo specificato, utilizzando gli argomenti. |
ConvertToInvariantString(ITypeDescriptorContext, Object) |
Converte il valore specificato in una rappresentazione in formato stringa indipendente dalle impostazioni cultura, utilizzando il contesto specificato. |
ConvertToInvariantString(Object) |
Converte il valore specificato in una rappresentazione in formato stringa indipendente dalle impostazioni cultura. |
ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Converte il valore specificato in una rappresentazione in formato stringa, utilizzando il contesto specificato e le informazioni sulle impostazioni cultura. |
ConvertToString(ITypeDescriptorContext, Object) |
Converte il valore specificato in una rappresentazione in formato stringa, utilizzando il contesto specificato. |
ConvertToString(Object) |
Converte il valore specificato in una rappresentazione in formato stringa. |
CreateInstance(IDictionary) |
Ricrea un oggetto Object in base a un set di valori di proprietà dell'oggetto. |
CreateInstance(ITypeDescriptorContext, IDictionary) |
Crea un'istanza del tipo a cui questo oggetto TypeConverter è associato, usando il contesto specificato, dato un set di valori di proprietà per l'oggetto. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetConvertFromException(Object) |
Restituisce un'eccezione da generare quando non è possibile eseguire una conversione. |
GetConvertToException(Object, Type) |
Restituisce un'eccezione da generare quando non è possibile eseguire una conversione. |
GetCreateInstanceSupported() |
Restituisce se la modifica di un valore su questo oggetto richiede una chiamata al metodo CreateInstance(IDictionary) per creare un nuovo valore. |
GetCreateInstanceSupported(ITypeDescriptorContext) |
Restituisce un valore che indica se la modifica di un valore di questo oggetto richiede una chiamata a CreateInstance(IDictionary) per creare un nuovo valore, usando il contesto specificato. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetProperties(ITypeDescriptorContext, Object) |
Restituisce un insieme di proprietà per il tipo di matrice specificato dal parametro del valore utilizzando il contesto specificato. |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Restituisce una raccolta di proprietà per il tipo di matrice specificato dal parametro del valore usando il contesto e gli attributi specificati. |
GetProperties(Object) |
Restituisce una raccolta di proprietà per il tipo di matrice specificato dal parametro value. |
GetPropertiesSupported() |
Indica se questo oggetto supporta le proprietà. |
GetPropertiesSupported(ITypeDescriptorContext) |
Indica se questo oggetto supporta proprietà, usando il contesto specificato. |
GetStandardValues() |
Restituisce un insieme di valori standard dal contesto predefinito del tipo di dati per il quale è stato progettato questo convertitore di tipi. |
GetStandardValues(ITypeDescriptorContext) |
Restituisce una raccolta di valori standard per il tipo di dati per cui è progettato questo convertitore di tipo, quando viene fornito un contesto di formato. |
GetStandardValuesExclusive() |
Indica se la raccolta di valori standard restituiti dal metodo GetStandardValues() rappresenta un elenco esclusivo. |
GetStandardValuesExclusive(ITypeDescriptorContext) |
Indica se la raccolta di valori standard restituiti da GetStandardValues() rappresenta un elenco esclusivo di valori possibili utilizzando il contesto specificato. |
GetStandardValuesSupported() |
Indica se questo oggetto supporta un set standard di valori selezionabili da un elenco. |
GetStandardValuesSupported(ITypeDescriptorContext) |
Indica se questo oggetto supporta un set standard di valori selezionabili da un elenco utilizzando il contesto specificato. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsValid(ITypeDescriptorContext, Object) |
Indica se l'oggetto valore specificato è valido per il tipo e per il contesto specificato. |
IsValid(Object) |
Indica se l'oggetto valore specificato è valido per questo tipo. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
SortProperties(PropertyDescriptorCollection, String[]) |
Ordina un insieme di proprietà. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Si applica a
Vedi anche
- TypeConverterAttribute
- PropertyDescriptorCollection
- TypeConverter.SimplePropertyDescriptor
- TypeConverter.StandardValuesCollection
- Panoramica dei convertitori di tipi per XAML
- Attributi CLR correlati a XAML per tipi e librerie personalizzati
- Definire tipi personalizzati da usare con i servizi XAML .NET
- Documentazione concettuale dei servizi XAML NET