Udostępnij za pośrednictwem


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 klasy TypeConverter.

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ść zawierającą wyliczenie, przed ustawieniem właściwości sprawdź, czy wartość wyliczenia jest prawidłowa. 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ę Color przechowywanej 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

Najbardziej typowym typem konwertera jest ten, który konwertuje na i z reprezentacji tekstu. Konwerter typów klasy jest powiązany z klasą z 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.

Nuta

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

Jednak w przypadku korzystania z języka XAML procesor XAML wyszukuje TypeConverterAttribute bezpośrednio, zamiast przechodzić przez TypeDescriptor. W przypadku, gdy chcesz utworzyć wystąpienie TypeDescriptor z kodu lub w przypadku utworzenia wystąpienia współużytkowanego w zasobach WPF, można utworzyć je bezpośrednio bez odwoływania się do TypeDescriptor lub innej obsługi systemu odbicia i typu.

Klasy pochodzące z TypeConverter są często przywołyane jako część sposobu, w jaki procesor XAML konwertuje atrybut lub inicjowanie wartości tekstowej 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, zazwyczaj implementują klasę TypeConverter, która obsługuje własne unikatowe zachowanie ConvertFrom z ciągu. To zachowanie umożliwia konwersję typu z ciągu podanego jako wartość atrybutu XAML i zapewnia procesor XAML z obsługą potrzebną do utworzenia obiektu na podstawie ciągu, dzięki czemu obiekt można wygenerować w przeanalizowanym grafie 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.

Uwagi dotyczące dziedziczenia

Dziedzicz z 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ą klasy TypeDescriptor. 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.

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ślonego kontekstu i informacji o 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 kontekstowych i kulturowych.

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, biorąc pod uwagę zestaw wartości właściwości dla obiektu.

CreateInstance(ITypeDescriptorContext, IDictionary)

Tworzy wystąpienie typu skojarzonego z tym TypeConverter przy użyciu określonego kontekstu, biorąc pod uwagę zestaw wartości właściwości dla obiektu.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(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 na tym obiekcie wymaga wywołania metody CreateInstance(IDictionary) w celu utworzenia nowej wartości.

GetCreateInstanceSupported(ITypeDescriptorContext)

Zwraca, czy zmiana wartości na tym obiekcie wymaga wywołania , aby CreateInstance(IDictionary) utworzyć nową wartość przy użyciu określonego kontekstu.

GetHashCode()

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

(Odziedziczone po Object)
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(ITypeDescriptorContext, Object)

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

GetProperties(Object)

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

GetPropertiesSupported()

Zwraca, 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 kontekstu domyślnego dla typu danych, dla których jest przeznaczony ten konwerter typów.

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() jest listą wyłączną.

GetStandardValuesExclusive(ITypeDescriptorContext)

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

GetStandardValuesSupported()

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

GetStandardValuesSupported(ITypeDescriptorContext)

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

GetType()

Pobiera Type 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 Object.

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