TypeConverter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ěč , MyClassConverter
musí 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:
Pokud chcete podporovat převod vlastního CanConvertFrom(ITypeDescriptorContext, Type)typu, přepište metody , CanConvertTo(ITypeDescriptorContext, Type)ConvertFrom(ITypeDescriptorContext, CultureInfo, Object), aConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type).
Chcete-li převést typy, které musí znovu vytvořit objekt, aby se změnila jeho hodnota, přepište CreateInstance(ITypeDescriptorContext, IDictionary) metody a GetCreateInstanceSupported(ITypeDescriptorContext) .
Chcete-li převést typy, které podporují vlastnosti, přepište GetProperties(ITypeDescriptorContext, Object, Attribute[]) metody a GetPropertiesSupported(ITypeDescriptorContext) . Pokud třída, kterou převádíte, nemá vlastnosti a potřebujete implementovat vlastnosti, můžete použít TypeConverter.SimplePropertyDescriptor třídu jako základ pro implementaci popisovačů vlastností. Když dědíte z TypeConverter.SimplePropertyDescriptor, musíte přepsat GetValue(Object) metody a SetValue(Object, Object) .
Chcete-li převést typy, které podporují standardní hodnoty, přepište GetStandardValues(ITypeDescriptorContext)metody , GetStandardValuesExclusive(ITypeDescriptorContext)GetStandardValuesSupported(ITypeDescriptorContext) aIsValid(ITypeDescriptorContext, Object).
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é
- TypeConverterAttribute
- PropertyDescriptorCollection
- TypeConverter.SimplePropertyDescriptor
- TypeConverter.StandardValuesCollection
- Přehled převaděčů typů pro XAML
- Atributy CLR související s XAML pro vlastní typy a knihovny
- Definování vlastních typů pro použití se službami .NET XAML
- Koncepční dokumentace ke službám NET XAML