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.
Fornisce un modo unificato per convertire i tipi di valori in altri tipi, nonché per accedere a valori e sottoproprietà 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 classe TypeConverter.
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 del 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 di convertitore più comune è quello che converte in e da una rappresentazione di testo. Il convertitore di tipi per una classe è associato alla classe con un 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 al convertitore appropriato usando TypeDescriptor. Per altre informazioni, vedere gli esempi di codice forniti.
Tuttavia, quando si usa XAML, un processore XAML cerca direttamente il TypeConverterAttribute, invece di passare attraverso TypeDescriptor. Nei casi in cui si desidera un'istanza di TypeDescriptor dal codice o in cui si crea un'istanza condivisa nelle risorse WPF, è accettabile crearla direttamente senza fare riferimento a TypeDescriptor o ad altri sistemi di reflection e tipi.
Le classi derivate da TypeConverter vengono spesso referenziate come parte del modo in cui 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 classe TypeConverter che supporta il proprio comportamento univoco ConvertFrom
da una stringa. Questo comportamento abilita la conversione dei tipi dalla stringa fornita come valore dell'attributo XAML e fornisce a un processore XAML 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 di TypeConverter personalizzata. Per altre informazioni, vedere Type Converters for XAML Overview.For more information, see Type Converters for XAML Overview.
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 metodi CanConvertFrom(ITypeDescriptorContext, Type), 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 metodi CreateInstance(ITypeDescriptorContext, IDictionary) e GetCreateInstanceSupported(ITypeDescriptorContext).
Per convertire i tipi che supportano le proprietà, eseguire l'override dei metodi GetProperties(ITypeDescriptorContext, Object, Attribute[]) e GetPropertiesSupported(ITypeDescriptorContext). Se la classe che si sta convertendo non dispone di proprietà ed è necessario implementare le proprietà, è possibile usare la classe TypeConverter.SimplePropertyDescriptor come base per implementare i descrittori di proprietà. Quando si eredita da TypeConverter.SimplePropertyDescriptor, è necessario eseguire l'override dei metodi GetValue(Object) e SetValue(Object, Object).
Per convertire i tipi che supportano valori standard, eseguire l'override dei metodi GetStandardValues(ITypeDescriptorContext), 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 classe TypeDescriptor. 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 conversione di tipi generalizzati.
Costruttori
TypeConverter() |
Inizializza una nuova istanza della classe TypeConverter. |
Metodi
CanConvertFrom(ITypeDescriptorContext, Type) |
Restituisce un valore che indica se questo convertitore può convertire un oggetto del tipo specificato nel tipo di questo convertitore, utilizzando il contesto specificato. |
CanConvertFrom(Type) |
Restituisce un valore che 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 questo convertitore può convertire l'oggetto nel tipo specificato utilizzando il contesto specificato. |
CanConvertTo(Type) |
Restituisce un valore che indica se questo convertitore può convertire l'oggetto nel tipo specificato. |
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Converte l'oggetto specificato nel tipo di questo convertitore, utilizzando il contesto e le informazioni sulle impostazioni cultura specificate. |
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 invarianti 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 e le informazioni sulle impostazioni cultura specificate. |
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 specificato, utilizzando il contesto e le informazioni sulle impostazioni cultura specificate. |
ConvertTo(Object, Type) |
Converte l'oggetto valore specificato nel tipo specificato utilizzando gli argomenti . |
ConvertToInvariantString(ITypeDescriptorContext, Object) |
Converte il valore specificato in una rappresentazione di stringa invariante delle impostazioni cultura, utilizzando il contesto specificato. |
ConvertToInvariantString(Object) |
Converte il valore specificato in una rappresentazione di stringa invariante delle impostazioni cultura. |
ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Converte il valore specificato in una rappresentazione di stringa, utilizzando il contesto e le informazioni sulle impostazioni cultura specificate. |
ConvertToString(ITypeDescriptorContext, Object) |
Converte il valore specificato in una rappresentazione di stringa, utilizzando il contesto specificato. |
ConvertToString(Object) |
Converte il valore specificato in una rappresentazione di stringa. |
CreateInstance(IDictionary) |
Ricrea un Object dato un set di valori di proprietà per l'oggetto. |
CreateInstance(ITypeDescriptorContext, IDictionary) |
Crea un'istanza del tipo a cui è associato questo TypeConverter utilizzando 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 un valore che indica se la modifica di un valore in 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 in questo oggetto richiede una chiamata a CreateInstance(IDictionary) per creare un nuovo valore, utilizzando il contesto specificato. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Restituisce una raccolta di proprietà per il tipo di matrice specificato dal parametro value, utilizzando il contesto e gli attributi specificati. |
GetProperties(ITypeDescriptorContext, Object) |
Restituisce una raccolta di proprietà per il tipo di matrice specificato dal parametro value, utilizzando il contesto specificato. |
GetProperties(Object) |
Restituisce un insieme di proprietà per il tipo di matrice specificato dal parametro value. |
GetPropertiesSupported() |
Restituisce un valore che indica se l'oggetto supporta le proprietà. |
GetPropertiesSupported(ITypeDescriptorContext) |
Restituisce un valore che indica se l'oggetto supporta le proprietà utilizzando il contesto specificato. |
GetStandardValues() |
Restituisce una raccolta di valori standard dal contesto predefinito per il tipo di dati per cui è progettato questo convertitore di tipi. |
GetStandardValues(ITypeDescriptorContext) |
Restituisce una raccolta di valori standard per il tipo di dati che questo convertitore di tipi è progettato per quando viene fornito con un contesto di formato. |
GetStandardValuesExclusive() |
Restituisce un valore che indica se l'insieme di valori standard restituiti da GetStandardValues() è un elenco esclusivo. |
GetStandardValuesExclusive(ITypeDescriptorContext) |
Restituisce un valore che indica se la raccolta di valori standard restituiti da GetStandardValues() è un elenco esclusivo di valori possibili, utilizzando il contesto specificato. |
GetStandardValuesSupported() |
Restituisce un valore che indica se l'oggetto supporta un set standard di valori che è possibile selezionare da un elenco. |
GetStandardValuesSupported(ITypeDescriptorContext) |
Restituisce un valore che indica se l'oggetto supporta un set standard di valori che è possibile selezionare da un elenco, utilizzando il contesto specificato. |
GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
IsValid(ITypeDescriptorContext, Object) |
Restituisce un valore che indica se l'oggetto valore specificato è valido per questo tipo e per il contesto specificato. |
IsValid(Object) |
Restituisce un valore che indica se l'oggetto valore specificato è valido per questo tipo. |
MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
SortProperties(PropertyDescriptorCollection, String[]) |
Ordina una raccolta 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 servizi XAML NET