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 hodnotá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 s výčtem, zkontrolujte, zda je hodnota výčtu platná před nastavením vlastnosti. Další příklad kódu vyžaduje, aby byl deklarován výčet 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($"{nameof(MyProperty)} is not valid");
        }
        // 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 použitím převaděče typů je převod objektu na řetězec. Následující příklad kódu vytiskne název Color uložené 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))

Pomocí převaděče typů můžete také převést hodnotu 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)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 takový, který převádí do textové podoby a z textové podoby. Převaděč typů třídy je vázán na třídu s TypeConverterAttribute. Pokud tento atribut není 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 přímo k převaděči typů. Místo toho přistupovat k příslušnému převaděči pomocí TypeDescriptor. Další informace najdete v příkladech kódu.

Při použití XAML ale procesor XAML hledá TypeConverterAttribute přímo místo procházení TypeDescriptor. V případech, kdy chcete instanci TypeDescriptor z kódu nebo kdy vytvoříte sdílenou instanci v WPF prostředcích, je přijatelné ji vytvořit přímo bez odkazu na TypeDescriptor nebo jinou podporu reflexe a typu systému.

Třídy odvozené z TypeConverter jsou často odkazovány jako součást toho, jak procesor XAML převádí atribut nebo inicializační textovou hodnotu z revizí (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 vlastní jedinečné ConvertFrom chování z řetězce. Toto chování umožňuje převod typů z řetězce poskytnutého jako hodnota atributu XAML a poskytuje procesor XAML s podporou potřebnou k vytvoření objektu z řetězce, aby objekt mohl být vytvořen v parsované objekt grafu. Vlastní typy nebo členy vlastních typů jsou označeny použitím TypeConverterAttribute definic s atributem odkazujícím na vlastní TypeConverter implementaci. Další informace naleznete v tématu Převaděče typů pro XAML Přehled.

Poznámky pro dědice

Dědí od TypeConverter implementace vlastních požadavků 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 s TypeDescriptor třídou. Nezabezpečený kód nezapisujte za předpokladu, že volající je důvěryhodný. Místo toho předpokládejme, že volající můžou vytvářet instance vašeho typu v částečném vztahu důvěryhodnosti.

Konstruktory

Name Description
TypeConverter()

Inicializuje novou instanci TypeConverter třídy.

Metody

Name Description
CanConvertFrom(ITypeDescriptorContext, Type)

Vrátí, zda tento převaděč může 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ěč může převést objekt na zadaný typ pomocí zadaného kontextu.

CanConvertTo(Type)

Vrátí, zda tento převaděč může 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 daný ř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 daný 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 informací o jazykové verzi.

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í objektu.

CreateInstance(ITypeDescriptorContext, IDictionary)

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

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ž převod nelze provést.

GetConvertToException(Object, Type)

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

GetCreateInstanceSupported()

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

GetCreateInstanceSupported(ITypeDescriptorContext)

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

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

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

GetProperties(ITypeDescriptorContext, Object)

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

GetProperties(Object)

Vrátí kolekci vlastností pro typ pole určeného 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 tento převaděč typů určen.

GetStandardValues(ITypeDescriptorContext)

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

GetStandardValuesExclusive()

Vrátí, zda kolekce standardních hodnot vrácených z GetStandardValues() je exkluzivní seznam.

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()

Získá Type 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 daný objekt hodnoty je platný pro tento typ.

MemberwiseClone()

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

(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é