TypeConverter Klasa

Definicja

Zapewnia ujednolicony sposób konwertowania typów wartości na inne typy, a także uzyskiwanie dostępu do standardowych wartości i podwłaściwości.

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
Dziedziczenie
TypeConverter
Pochodne
Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć wystąpienie konwertera typów i powiązać je z klasą. Klasa implementowania konwertera MyClassConverter, musi dziedziczyć z TypeConverter klasy.

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

Jeśli masz właściwość, która ma wyliczenie, sprawdź, czy wartość wyliczenia jest prawidłowa przed ustawieniem właściwości. Następny przykład kodu wymaga zadeklarowania wyliczenia o nazwie 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

Innym typowym użyciem konwertera typów jest przekonwertowanie obiektu na ciąg. Poniższy przykład kodu wyświetla nazwę przechowywanego Color w zmiennej 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))

Możesz również użyć konwertera typów, aby przekonwertować wartość z jego nazwy, jak pokazano w następnym przykładzie kodu.

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)

W poniższym przykładzie kodu można użyć konwertera typów, aby wyświetlić zestaw wartości standardowych, które obsługuje obiekt.

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

Uwagi

Najczęstszym typem konwertera jest ten, który konwertuje na i z reprezentacji tekstowej. Konwerter typów klasy jest powiązany z klasą z klasą TypeConverterAttribute. Jeśli ten atrybut nie zostanie zastąpiony, wszystkie klasy dziedziczone z tej klasy używają tego samego konwertera typów co klasa bazowa.

Uwaga

W celach systemowych ogólnego typu nie należy uzyskiwać bezpośredniego dostępu do konwertera typów. Zamiast tego uzyskaj dostęp do odpowiedniego konwertera przy użyciu polecenia TypeDescriptor. Aby uzyskać więcej informacji, zobacz podane przykłady kodu.

Jednak w przypadku używania języka XAML procesor XAML wyszukuje TypeConverterAttribute dane bezpośrednio, zamiast przechodzić przez program TypeDescriptor. W przypadku, gdy chcesz TypeDescriptor utworzyć wystąpienie z kodu lub utworzyć wystąpienie udostępnione w zasobach WPF, można utworzyć je bezpośrednio bez odwoływania się lub innego odbicia TypeDescriptor i obsługi systemu typów.

Klasy pochodne TypeConverter są często przywoływalne jako część sposobu, w jaki procesor XAML konwertuje atrybut lub wartość tekstową inicjowania z znaczników (który jest z natury ciągiem) i generuje obiekt dla reprezentacji w czasie wykonywania. Autorzy typów niestandardowych, którzy zamierzają obsługiwać zachowanie konwersji typów dla języka XAML, zwykle implementują klasę TypeConverter , która obsługuje własne unikatowe ConvertFrom zachowanie z ciągu. To zachowanie umożliwia konwersję typu z ciągu podanego jako wartość atrybutu XAML i zapewnia procesor XAML z obsługą wymaganą do utworzenia obiektu na podstawie ciągu, dzięki czemu obiekt można wygenerować w grafie analizowanego obiektu. Typy niestandardowe lub elementy członkowskie typów niestandardowych są wskazywane przez zastosowanie TypeConverterAttribute do definicji z atrybutem odwołującym się do implementacji niestandardowej TypeConverter . Aby uzyskać więcej informacji, zobacz Type Converters for XAML Overview (Konwertery typów dla języka XAML — omówienie).

Uwagi dotyczące dziedziczenia

Dziedzicz od TypeConverter , aby zaimplementować własne wymagania dotyczące konwersji. Po dziedziczeniu z tej klasy można zastąpić następujące metody:

Uwaga: Typ pochodny może być oznaczony jako internal lub private, ale wystąpienie typu można utworzyć za pomocą TypeDescriptor klasy . Nie zapisuj niezabezpieczonego kodu, zakładając, że obiekt wywołujący jest zaufany. Załóżmy, że osoby wywołujące mogą tworzyć wystąpienia typu w częściowym zaufaniu.

Aby uzyskać więcej informacji na temat konwerterów typów dla ogólnych celów (non-XAML), zobacz How to: Implement a Type Converter or Generalized Type Conversion (Instrukcje: implementowanie konwertera typów lub uogólnionej konwersji typów).

Konstruktory

TypeConverter()

Inicjuje nowe wystąpienie klasy TypeConverter.

Metody

CanConvertFrom(ITypeDescriptorContext, Type)

Zwraca, czy ten konwerter może przekonwertować obiekt danego typu na typ tego konwertera przy użyciu określonego kontekstu.

CanConvertFrom(Type)

Zwraca, czy ten konwerter może przekonwertować obiekt danego typu na typ tego konwertera.

CanConvertTo(ITypeDescriptorContext, Type)

Zwraca, czy ten konwerter może przekonwertować obiekt na określony typ przy użyciu określonego kontekstu.

CanConvertTo(Type)

Zwraca, czy ten konwerter może przekonwertować obiekt na określony typ.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Konwertuje dany obiekt na typ tego konwertera przy użyciu określonych informacji o kontekście i kulturze.

ConvertFrom(Object)

Konwertuje daną wartość na typ tego konwertera.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Konwertuje dany ciąg na typ tego konwertera przy użyciu niezmiennej kultury i określonego kontekstu.

ConvertFromInvariantString(String)

Konwertuje dany ciąg na typ tego konwertera przy użyciu niezmiennej kultury.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Konwertuje dany tekst na obiekt przy użyciu określonego kontekstu i informacji o kulturze.

ConvertFromString(ITypeDescriptorContext, String)

Konwertuje dany tekst na obiekt przy użyciu określonego kontekstu.

ConvertFromString(String)

Konwertuje określony tekst na obiekt.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Konwertuje dany obiekt wartości na określony typ przy użyciu określonych informacji o kontekście i kulturze.

ConvertTo(Object, Type)

Konwertuje dany obiekt wartości na określony typ przy użyciu argumentów.

ConvertToInvariantString(ITypeDescriptorContext, Object)

Konwertuje określoną wartość na niezmienną reprezentację ciągu kultury przy użyciu określonego kontekstu.

ConvertToInvariantString(Object)

Konwertuje określoną wartość na niezmienną reprezentację ciągu kultury.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Konwertuje daną wartość na reprezentację ciągu przy użyciu określonego kontekstu i informacji o kulturze.

ConvertToString(ITypeDescriptorContext, Object)

Konwertuje daną wartość na reprezentację ciągu przy użyciu danego kontekstu.

ConvertToString(Object)

Konwertuje określoną wartość na reprezentację ciągu.

CreateInstance(IDictionary)

Ponownie tworzy Object zestaw wartości właściwości dla obiektu.

CreateInstance(ITypeDescriptorContext, IDictionary)

Tworzy wystąpienie typu skojarzonego TypeConverter z określonym kontekstem, biorąc pod uwagę zestaw wartości właściwości dla obiektu.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetConvertFromException(Object)

Zwraca wyjątek zgłaszany, gdy nie można wykonać konwersji.

GetConvertToException(Object, Type)

Zwraca wyjątek zgłaszany, gdy nie można wykonać konwersji.

GetCreateInstanceSupported()

Zwraca, czy zmiana wartości w tym obiekcie wymaga wywołania CreateInstance(IDictionary) metody w celu utworzenia nowej wartości.

GetCreateInstanceSupported(ITypeDescriptorContext)

Zwraca, czy zmiana wartości w tym obiekcie wymaga wywołania w celu CreateInstance(IDictionary) utworzenia nowej wartości przy użyciu określonego kontekstu.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetProperties(ITypeDescriptorContext, Object)

Zwraca kolekcję właściwości dla typu tablicy określonej przez parametr value przy użyciu określonego kontekstu.

GetProperties(ITypeDescriptorContext, Object, Attribute[])

Zwraca kolekcję właściwości dla typu tablicy określonej przez parametr value przy użyciu określonego kontekstu i atrybutów.

GetProperties(Object)

Zwraca kolekcję właściwości dla typu tablicy określonej przez parametr value.

GetPropertiesSupported()

Zwraca informację, czy ten obiekt obsługuje właściwości.

GetPropertiesSupported(ITypeDescriptorContext)

Zwraca, czy ten obiekt obsługuje właściwości przy użyciu określonego kontekstu.

GetStandardValues()

Zwraca kolekcję wartości standardowych z domyślnego kontekstu dla typu danych, dla których ten konwerter typów jest przeznaczony.

GetStandardValues(ITypeDescriptorContext)

Zwraca kolekcję wartości standardowych dla typu danych, dla których ten konwerter typów jest przeznaczony w przypadku, gdy jest dostarczany z kontekstem formatu.

GetStandardValuesExclusive()

Zwraca, czy kolekcja wartości standardowych zwracanych z GetStandardValues() listy jest listą wyłączną.

GetStandardValuesExclusive(ITypeDescriptorContext)

Zwraca, czy kolekcja wartości standardowych zwracanych z GetStandardValues() funkcji jest wyłączną listą możliwych wartości przy użyciu określonego kontekstu.

GetStandardValuesSupported()

Zwraca informację, czy ten obiekt obsługuje standardowy zestaw wartości, które można wybrać z listy.

GetStandardValuesSupported(ITypeDescriptorContext)

Zwraca informację, czy ten obiekt obsługuje standardowy zestaw wartości, które można wybrać z listy przy użyciu określonego kontekstu.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsValid(ITypeDescriptorContext, Object)

Zwraca, czy dany obiekt wartości jest prawidłowy dla tego typu i dla określonego kontekstu.

IsValid(Object)

Zwraca, czy dany obiekt wartości jest prawidłowy dla tego typu.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SortProperties(PropertyDescriptorCollection, String[])

Sortuje kolekcję właściwości.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też