Condividi tramite


TypeConverter Classe

Definizione

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:

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