Questa documentazione è stata archiviata e non viene gestita.

Classe TypeConverter

Rappresenta una soluzione unica per la conversione di tipi di valori in altri tipi, oltre che per l'accesso a sottoproprietà e valori standard.

Spazio dei nomi: System.ComponentModel
Assembly: System (in system.dll)

[ComVisibleAttribute(true)] 
public class TypeConverter
/** @attribute ComVisibleAttribute(true) */ 
public class TypeConverter
ComVisibleAttribute(true) 
public class TypeConverter

Il tipo più comune di convertitore è quello che converte da e verso una rappresentazione di testo. Il convertitore di tipi di una classe è associato alla classe con un attributo TypeConverterAttribute. A meno che non venga eseguito l'override di questo attributo, tutte le classi che ereditano da questa classe utilizzano lo stesso convertitore di tipi della classe base.

NotaNota

Non accedere mai direttamente a un convertitore di tipi. Per accedere al convertitore appropriato, utilizzare invece TypeDescriptor. Per ulteriori informazioni, consultare gli esempi di codice forniti.

Note sull'ereditarietà: Ereditare da TypeConverter per implementare i propri requisiti di conversione. Quando si eredita da questa classe, è possibile eseguire l'override dei seguenti metodi:

NotaNota

Il tipo derivato potrebbe essere contrassegnato con internal o private, ma è possibile creare un'istanza del tipo con la classe TypeDescriptor. Evitare di scrivere codice non protetto in base al presupposto che il chiamante sia attendibile. Tenere presente, invece, che i chiamanti potrebbero creare istanze del tipo in un contesto di attendibilità parziale.

Per ulteriori informazioni sui convertitori di tipi, vedere Procedura: implementare un convertitore di tipi o Conversione di tipi generalizzata.
NotaNota

All'attributo HostProtectionAttribute applicato a questa classe è associato il seguente valore della proprietà Resources: SharedState. L'oggetto HostProtectionAttribute non ha effetto sulle applicazioni desktop, che in genere vengono avviate facendo doppio clic su un'icona, digitando un comando o immettendo un URL in un browser. Per ulteriori informazioni, vedere la classe HostProtectionAttribute o Programmazione per SQL Server e attributi di protezione host.

Nell'esempio di codice riportato di seguito 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.

[TypeConverter(typeof(MyClassConverter))]
 public class MyClass {
    // Insert code here.
}

/** @attribute TypeConverter(MyClassConverter.class)
 */
public class MyClass
{
    // Insert code here.
} //MyClass 

Quando una proprietà dispone di un'enumerazione, verificare se un valore di enumerazione è valido prima di impostare la proprietà. Nell'esempio di codice successivo si presuppone che sia già stata dichiarata un'enumerazione denominata MyPropertyEnum.

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.
    }
 }

/** @property 
 */
public void set_MyProperty(MyPropertyEnum value)
{
    // Checks to see if the value passed is valid.
    if (!(TypeDescriptor.GetConverter(MyPropertyEnum.class.ToType()).
        IsValid(value))) {
        throw new ArgumentException();
    }
    // The value is valid. Insert code to set the property.
} //set_MyProperty

Un altro comune utilizzo dei convertitori di tipi consiste nel convertire un oggetto in una stringa. Nell'esempio di codice riportato di seguito viene stampato il nome dell'oggetto Color memorizzato nella variabile c.

Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));

Color c = Color.get_Red();
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));

È anche possibile utilizzare un convertitore di tipi per convertire un valore in base al proprio nome, come dimostrato nell'esempio di codice che segue.

Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");

Color c = (Color)(TypeDescriptor.GetConverter(Color.class.ToType()).
    ConvertFromString("Red"));

Nell'esempio di codice riportato di seguito è possibile utilizzare un convertitore di tipi per stampare l'insieme dei valori standard supportati dall'oggetto.

foreach(Color c in TypeDescriptor.GetConverter(typeof(Color)).GetStandardValues()) {
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
 }

IEnumerator e = TypeDescriptor.GetConverter(Color.class.ToType()).
    GetStandardValues().GetEnumerator();
while (e.MoveNext()) {
    Color c = (Color)e.get_Current();
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
}

System.Object
  System.ComponentModel.TypeConverter
     Classi derivate

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Mostra: