Sdílet prostřednictvím


TypeConverter Třída

Definice

Poskytuje jednotný způsob převodu typů hodnot na jiné typy a také pro přístup ke standardním hodnotám a dílčím vlastnostím.

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
Dědičnost
TypeConverter
Odvozené
Atributy

Příklady

Následující příklad kódu ukazuje, jak vytvořit instanci převaděče typů a svázat ji s třídou. Třída implementuje převaděč , MyClassConvertermusí dědit z TypeConverter třídy.

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

Pokud máte vlastnost, která má výčet, před nastavením vlastnosti zkontrolujte, zda je hodnota výčtu platná. Další příklad kódu vyžaduje, aby byl deklarován volaný MyPropertyEnum výčet.

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

Dalším běžným využitím převaděče typů je převedení objektu na řetězec. Následující příklad kódu vypíše název uloženého Color v proměnné 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))

Převaděč typů můžete také použít k převodu hodnoty z jejího názvu, jak je znázorněno v dalším příkladu kódu.

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)

V následujícím příkladu kódu můžete pomocí převaděče typů vytisknout sadu standardních hodnot, které objekt podporuje.

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

Poznámky

Nejběžnějším typem převaděče je ten, který převádí na a z textové reprezentace. Převaděč typů pro třídu je vázán na třídu pomocí TypeConverterAttribute. Pokud není tento atribut přepsán, všechny třídy, které dědí z této třídy, používají stejný převaděč typů jako základní třída.

Poznámka

Pro obecné účely systému typů nepřistupujte k převaděči typů přímo. Místo toho k příslušnému převaděči TypeDescriptorpoužijte . Další informace najdete v uvedených příkladech kódu.

Při použití XAML ale procesor XAML vyhledá TypeConverterAttribute přímo objekt, místo aby procházel .TypeDescriptor V případech, kdy chcete TypeDescriptor instanci z kódu nebo kdy vytvoříte sdílenou instanci v prostředcích WPF, je přijatelné ji vytvořit přímo bez odkazů nebo jiné reflexe TypeDescriptor a podpory systému typů.

Na třídy odvozené z TypeConverter se často odkazuje jako součást toho, jak procesor XAML převádí textovou hodnotu atributu nebo inicializace ze značek (což je ze své podstaty řetězec) a generuje objekt pro reprezentaci za běhu. Autoři vlastních typů, kteří mají v úmyslu podporovat chování převodu typů pro XAML, obvykle implementují TypeConverter třídu, která podporuje jejich vlastní jedinečné ConvertFrom chování z řetězce. Toto chování umožňuje převod typů z řetězce zadaného jako hodnota atributu XAML a poskytuje procesoru XAML podporu potřebnou k vytvoření objektu z řetězce, aby bylo možné objekt vytvořit v parsovaného grafu objektů. Vlastní typy nebo členy vlastních typů se označují použitím TypeConverterAttribute definic s atributem odkazujícím na vlastní TypeConverter implementaci. Další informace najdete v tématu Přehled převaděčů typů pro XAML.

Poznámky pro dědice

Dědit z TypeConverter a implementovat vlastní požadavky na převod. Když dědíte z této třídy, můžete přepsat následující metody:

Poznámka: Odvozený typ může být označen jako internal nebo private, ale instanci vašeho typu lze vytvořit pomocí TypeDescriptor třídy . Nezabezpečený kód nezapisujte za předpokladu, že je volající důvěryhodný. Předpokládejme místo toho, že volající můžou vytvářet instance vašeho typu v částečném vztahu důvěryhodnosti.

Další informace o převaděčích typů pro obecné účely (bez XAML) najdete v tématu Postupy: Implementace převaděče typů nebo Převod generalizovaného typu.

Konstruktory

TypeConverter()

Inicializuje novou instanci TypeConverter třídy .

Metody

CanConvertFrom(ITypeDescriptorContext, Type)

Vrátí, zda tento převaděč lze převést objekt daného typu na typ tohoto převaděče pomocí zadaného kontextu.

CanConvertFrom(Type)

Vrátí, zda tento převaděč může převést objekt daného typu na typ tohoto převaděče.

CanConvertTo(ITypeDescriptorContext, Type)

Vrátí, zda tento převaděč lze převést objekt na zadaný typ pomocí zadaného kontextu.

CanConvertTo(Type)

Vrátí, zda tento převaděč lze převést objekt na zadaný typ.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Převede daný objekt na typ tohoto převaděče pomocí zadaného kontextu a informací o jazykové verzi.

ConvertFrom(Object)

Převede danou hodnotu na typ tohoto převaděče.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Převede zadaný řetězec na typ tohoto převaděče pomocí invariantní jazykové verze a zadaného kontextu.

ConvertFromInvariantString(String)

Převede daný řetězec na typ tohoto převaděče pomocí invariantní jazykové verze.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Převede daný text na objekt pomocí zadaného kontextu a informací o jazykové verzi.

ConvertFromString(ITypeDescriptorContext, String)

Převede zadaný text na objekt pomocí zadaného kontextu.

ConvertFromString(String)

Převede zadaný text na objekt.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Převede daný objekt hodnoty na zadaný typ pomocí zadaného kontextu a jazykové verze informací.

ConvertTo(Object, Type)

Převede daný objekt hodnoty na zadaný typ pomocí argumentů.

ConvertToInvariantString(ITypeDescriptorContext, Object)

Převede zadanou hodnotu na reprezentaci řetězce invariantní jazykové verze pomocí zadaného kontextu.

ConvertToInvariantString(Object)

Převede zadanou hodnotu na reprezentaci řetězce invariantní jazykové verze.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Převede danou hodnotu na řetězcovou reprezentaci pomocí zadaného kontextu a informací o jazykové verzi.

ConvertToString(ITypeDescriptorContext, Object)

Převede danou hodnotu na řetězcovou reprezentaci pomocí daného kontextu.

ConvertToString(Object)

Převede zadanou hodnotu na řetězcovou reprezentaci.

CreateInstance(IDictionary)

Znovu vytvoří danou Object sadu hodnot vlastností pro objekt.

CreateInstance(ITypeDescriptorContext, IDictionary)

Vytvoří instanci typu, ke kterému TypeConverter je přidružena, pomocí zadaného kontextu, vzhledem k sadě hodnot vlastností pro objekt.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetConvertFromException(Object)

Vrátí výjimku, která se vyvolá, když nelze provést převod.

GetConvertToException(Object, Type)

Vrátí výjimku, která se vyvolá, když nelze provést převod.

GetCreateInstanceSupported()

Vrátí, zda změna hodnoty tohoto objektu vyžaduje volání CreateInstance(IDictionary) metody k vytvoření nové hodnoty.

GetCreateInstanceSupported(ITypeDescriptorContext)

Vrátí, zda změna hodnoty u tohoto objektu vyžaduje volání CreateInstance(IDictionary) k vytvoření nové hodnoty pomocí zadaného kontextu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetProperties(ITypeDescriptorContext, Object)

Vrátí kolekci vlastností pro typ pole určený parametrem value pomocí zadaného kontextu.

GetProperties(ITypeDescriptorContext, Object, Attribute[])

Vrátí kolekci vlastností pro typ pole určený parametrem value pomocí zadaného kontextu a atributů.

GetProperties(Object)

Vrátí kolekci vlastností pro typ pole určený parametrem hodnoty.

GetPropertiesSupported()

Vrátí, zda tento objekt podporuje vlastnosti.

GetPropertiesSupported(ITypeDescriptorContext)

Vrátí, zda tento objekt podporuje vlastnosti pomocí zadaného kontextu.

GetStandardValues()

Vrátí kolekci standardních hodnot z výchozího kontextu pro datový typ, pro který je určen převaděč typů.

GetStandardValues(ITypeDescriptorContext)

Vrátí kolekci standardních hodnot pro datový typ, pro který je tento převaděč typů určen, pokud je k dispozici kontext formátu.

GetStandardValuesExclusive()

Vrátí, zda je kolekce standardních hodnot vrácená z GetStandardValues() výhradního seznamu.

GetStandardValuesExclusive(ITypeDescriptorContext)

Vrátí, zda kolekce standardních hodnot vrácených z GetStandardValues() je výhradním seznamem možných hodnot pomocí zadaného kontextu.

GetStandardValuesSupported()

Vrátí, zda tento objekt podporuje standardní sadu hodnot, které lze vybrat ze seznamu.

GetStandardValuesSupported(ITypeDescriptorContext)

Vrátí, zda tento objekt podporuje standardní sadu hodnot, které lze vybrat ze seznamu pomocí zadaného kontextu.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsValid(ITypeDescriptorContext, Object)

Vrátí, zda daný objekt hodnoty je platný pro tento typ a pro zadaný kontext.

IsValid(Object)

Vrátí, zda je daný objekt hodnoty platný pro tento typ.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SortProperties(PropertyDescriptorCollection, String[])

Seřadí kolekci vlastností.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také