TypeConverter Klasa

Definicja

Zapewnia jednolity sposób konwersji typów wartości na inne typy, a także do uzyskiwania dostępu do standardowych wartości i podwłaściwości.Provides a unified way of converting types of values to other types, as well as for accessing standard values and subproperties.

public ref class TypeConverter
[System.Runtime.InteropServices.ComVisible(true)]
public class TypeConverter
type TypeConverter = class
Public Class TypeConverter
Dziedziczenie
TypeConverter
Pochodne
Atrybuty

Przykłady

Poniższy przykład kodu pokazuje, jak utworzyć wystąpienie konwertera typów i powiązać je z klasą.The following code example shows how to create an instance of a type converter and bind it to a class. Klasa implementująca konwerter, MyClassConvertermusi dziedziczyć TypeConverter po klasie.The class implementing the converter, MyClassConverter, must inherit from the TypeConverter class.

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.When you have a property that has an enumeration, check to see whether an enumeration value is valid before setting the property. Następny przykład kodu wymaga zadeklarowania wyliczeniowego MyPropertyEnum .The next code example requires that an enumeration called MyPropertyEnum has been declared.

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 konwertowanie obiektu na ciąg.Another common type converter usage is to convert an object to a string. Poniższy przykład kodu drukuje nazwę Color przechowywaną w zmiennej. cThe following code example prints out the name of the Color stored in the variable c.

Color c = Color::Red;
Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
Dim c As Color = Color.Red
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))

Można również użyć konwertera typów, aby przekonwertować wartość z jej nazwy, jak pokazano w następnym przykładzie kodu.You can also use a type converter to convert a value from its name, as shown in the next code example.

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 do drukowania zestawu wartości standardowych obsługiwanych przez obiekt.In the following code example, you can use a type converter to print out the set of standard values that the object supports.

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

Typowym typem konwertera jest jeden, który konwertuje do i z reprezentacji tekstowej.The most common type of converter is one that converts to and from a text representation. Konwerter typu dla klasy jest powiązany z klasą z TypeConverterAttribute.The type converter for a class is bound to the class with a TypeConverterAttribute. Jeśli ten atrybut nie zostanie przesłonięty, wszystkie klasy dziedziczące z tej klasy używają tego samego konwertera typów, który jest klasą bazową.Unless this attribute is overridden, all classes that inherit from this class use the same type converter as the base class.

Uwaga

W przypadku typów ogólnych nie należy bezpośrednio uzyskiwać dostępu do konwertera typów.For general type system purposes, do not access a type converter directly. Zamiast tego należy uzyskać dostęp do odpowiedniego konwertera przy użyciu polecenia TypeDescriptor.Instead, access the appropriate converter by using TypeDescriptor. Aby uzyskać więcej informacji, zobacz przykłady kodu podane poniżej.For more information, see the code examples provided.

Jednak podczas korzystania z języka XAML procesor XAML wyszukuje TypeConverterAttribute bezpośrednio, zamiast przechodzić przez. TypeDescriptorHowever, when using XAML, a XAML processor searches for the TypeConverterAttribute directly, instead of going through TypeDescriptor. W przypadkach, w których należy TypeDescriptor utworzyć wystąpienie z kodu lub w przypadku tworzenia wystąpienia udostępnionego w zasobach WPF, można je skonstruować bezpośrednio bez odwoływania TypeDescriptor się lub innej obsługi odbicia i typu.For cases where you do want a TypeDescriptor instance from code, or where you create a shared instance in WPF resources, it is acceptable to construct it directly without referencing TypeDescriptor or other reflection and type system support.

Klasy pochodne TypeConverter są często przywoływane w sposób, w jaki procesor XAML konwertuje atrybut lub wartość tekstu inicjującego z znacznika (który jest z siebie ciągiem) i generuje obiekt dla reprezentacji w czasie wykonywania.Classes derived from TypeConverter are often referenced as part of how a XAML processor converts an attribute or initialization text value from markup (which is inherently a string) and generates an object for a run-time representation. Autorzy typów niestandardowych, którzy zamierzają obsługiwać zachowanie konwersji typu dla języka XAML zwykle TypeConverter implementują klasę, która obsługuje ConvertFrom własne zachowanie w ciągu.Custom type authors that intend to support a type conversion behavior for XAML typically implement a TypeConverter class that supports their own unique ConvertFrom behavior from a string. Takie zachowanie umożliwia konwersję typu z ciągu podanego jako wartość atrybutu XAML i udostępnia procesor XAML z obsługą, która jest wymagana do utworzenia obiektu z ciągu, tak aby obiekt można było utworzyć w analizowanym grafie obiektów.This behavior enables type conversion from the string provided as a XAML attribute value and provides a XAML processor with the support needed to create an object from the string, so that the object can be produced in a parsed object graph. Typy niestandardowe lub składowe typów niestandardowych są wskazywane przez TypeConverterAttribute zastosowanie do definicji, z atrybutem odwołującym TypeConverter się do implementacji niestandardowej.Custom types or members of custom types are indicated by applying TypeConverterAttribute to the definitions, with the attribute referencing the custom TypeConverter implementation. Aby uzyskać więcej informacji, zobacz Typy konwerterów dla języka XAML — Omówienie.For more information, see Type Converters for XAML Overview.

Uwagi dotyczące dziedziczenia

Dziedzicz po TypeConverter , aby zaimplementować własne wymagania dotyczące konwersji.Inherit from TypeConverter to implement your own conversion requirements. W przypadku dziedziczenia z tej klasy można przesłonić następujące metody:When you inherit from this class, you can override the following methods: -Aby obsługiwać konwersję typu niestandardowego CanConvertFrom(ITypeDescriptorContext, Type), Zastąp metody ConvertFrom(ITypeDescriptorContext, CultureInfo, Object), CanConvertTo(ITypeDescriptorContext, Type), ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) i.- To support custom type conversion, override the CanConvertFrom(ITypeDescriptorContext, Type), CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object), and ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) methods.

— Aby przekonwertować typy, które muszą ponownie utworzyć obiekt, aby zmienić jego wartość, Zastąp CreateInstance(ITypeDescriptorContext, IDictionary) metody GetCreateInstanceSupported(ITypeDescriptorContext) i.- To convert types that must re-create the object to change its value, override the CreateInstance(ITypeDescriptorContext, IDictionary) and GetCreateInstanceSupported(ITypeDescriptorContext) methods.

— Aby skonwertować typy, które obsługują właściwości, GetProperties(ITypeDescriptorContext, Object, Attribute[]) Zastąp GetPropertiesSupported(ITypeDescriptorContext) metody i.- To convert types that support properties, override the GetProperties(ITypeDescriptorContext, Object, Attribute[]) and GetPropertiesSupported(ITypeDescriptorContext) methods. Jeśli konwertowana Klasa nie ma właściwości i musisz zaimplementować właściwości, można użyć TypeConverter.SimplePropertyDescriptor klasy jako podstawy do implementowania deskryptorów właściwości.If the class you are converting does not have properties, and you need to implement properties, you can use the TypeConverter.SimplePropertyDescriptor class as a base for implementing the property descriptors. W przypadku dziedziczenia TypeConverter.SimplePropertyDescriptorz, należy GetValue(Object) zastąpić metody i SetValue(Object, Object) .When you inherit from TypeConverter.SimplePropertyDescriptor, you must override the GetValue(Object) and SetValue(Object, Object) methods.

— Aby skonwertować typy, które obsługują wartości standardowe GetStandardValues(ITypeDescriptorContext), Zastąp GetStandardValuesExclusive(ITypeDescriptorContext)metody GetStandardValuesSupported(ITypeDescriptorContext) , IsValid(ITypeDescriptorContext, Object) i.- To convert types that support standard values, override the GetStandardValues(ITypeDescriptorContext), GetStandardValuesExclusive(ITypeDescriptorContext), GetStandardValuesSupported(ITypeDescriptorContext) and IsValid(ITypeDescriptorContext, Object) methods.


Typ pochodny może być oznaczony jako internal lub private, ale wystąpienie typu TypeDescriptor można utworzyć za pomocą klasy.Your derived type might be marked as internal or private, but an instance of your type can be created with the TypeDescriptor class. Nie zapisuj niezabezpieczonego kodu przez założenie, że obiekt wywołujący jest zaufany.Do not write insecure code by assuming the caller is trusted. Załóżmy zamiast tego, że obiekty wywołujące mogą tworzyć wystąpienia typu w częściowej relacji zaufania.Assume instead that callers might create instances of your type in partial trust.

Aby uzyskać więcej informacji na temat konwerterów typów ogólnych (innych niż XAML), [zobacz How to: Implementowanie konwertera](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/ayybcxe5(v=vs.120)) typów lub [konwersji typów uogólnionych](https://msdn.microsoft.com/library/49253ae6-7657-4810-82ab-1176a6feeada).For more information about type converters for general (non-XAML) purposes, see [How to: Implement a Type Converter](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/ayybcxe5(v=vs.120)) or [Generalized Type Conversion](https://msdn.microsoft.com/library/49253ae6-7657-4810-82ab-1176a6feeada).

Konstruktory

TypeConverter()

Inicjuje nowe wystąpienie klasy TypeConverter klasy.Initializes a new instance of the TypeConverter class.

Metody

CanConvertFrom(ITypeDescriptorContext, Type)

Zwraca czy ten konwerter może skonwertować obiekt danego typu na typ tego konwertera przy użyciu określonego kontekstu.Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.

CanConvertFrom(Type)

Zwraca czy ten konwerter może skonwertować obiekt danego typu na typ tego konwertera.Returns whether this converter can convert an object of the given type to the type of this converter.

CanConvertTo(ITypeDescriptorContext, Type)

Zwraca czy ten konwerter może przekonwertować obiekt na określony typ, przy użyciu określonego kontekstu.Returns whether this converter can convert the object to the specified type, using the specified context.

CanConvertTo(Type)

Zwraca czy ten konwerter może przekonwertować obiekt na określony typ.Returns whether this converter can convert the object to the specified type.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Konwertuje dany obiekt na typ tego konwertera przy użyciu określonych informacji o kontekście i kulturze.Converts the given object to the type of this converter, using the specified context and culture information.

ConvertFrom(Object)

Konwertuje daną wartość na typ tego konwertera.Converts the given value to the type of this converter.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Konwertuje dany ciąg na typ tego konwertera przy użyciu niezmiennej kultury i określonego kontekstu.Converts the given string to the type of this converter, using the invariant culture and the specified context.

ConvertFromInvariantString(String)

Konwertuje dany ciąg na typ tego konwertera przy użyciu niezmiennej kultury.Converts the given string to the type of this converter, using the invariant culture.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Konwertuje dany tekst do obiektu, przy użyciu określonych informacji o kontekście i kulturze.Converts the given text to an object, using the specified context and culture information.

ConvertFromString(ITypeDescriptorContext, String)

Konwertuje dany tekst do obiektu, przy użyciu określonego kontekstu.Converts the given text to an object, using the specified context.

ConvertFromString(String)

Konwertuje określony tekst na obiekt.Converts the specified text to an object.

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.Converts the given value object to the specified type, using the specified context and culture information.

ConvertTo(Object, Type)

Konwertuje dany obiekt wartości na określony typ, używając argumentów.Converts the given value object to the specified type, using the arguments.

ConvertToInvariantString(ITypeDescriptorContext, Object)

Konwertuje określoną wartość na reprezentację w postaci ciągu niezmiennej, przy użyciu określonego kontekstu.Converts the specified value to a culture-invariant string representation, using the specified context.

ConvertToInvariantString(Object)

Konwertuje określoną wartość na reprezentację niezmienną typu Culture.Converts the specified value to a culture-invariant string representation.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Konwertuje daną wartość na reprezentację ciągu, przy użyciu określonych informacji o kontekście i kulturze.Converts the given value to a string representation, using the specified context and culture information.

ConvertToString(ITypeDescriptorContext, Object)

Konwertuje daną wartość na reprezentację ciągu przy użyciu danego kontekstu.Converts the given value to a string representation, using the given context.

ConvertToString(Object)

Konwertuje określoną wartość na reprezentację ciągu.Converts the specified value to a string representation.

CreateInstance(IDictionary)

Powoduje ponowne utworzenie Object podanego zestawu wartości właściwości dla obiektu.Re-creates an Object given a set of property values for the object.

CreateInstance(ITypeDescriptorContext, IDictionary)

Tworzy wystąpienie typu, z którym TypeConverter jest skojarzone, przy użyciu określonego kontekstu, z uwzględnieniem zestawu wartości właściwości dla tego obiektu.Creates an instance of the type that this TypeConverter is associated with, using the specified context, given a set of property values for the object.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetConvertFromException(Object)

Zwraca wyjątek, który ma zostać zgłoszony, gdy nie można wykonać konwersji.Returns an exception to throw when a conversion cannot be performed.

GetConvertToException(Object, Type)

Zwraca wyjątek, który ma zostać zgłoszony, gdy nie można wykonać konwersji.Returns an exception to throw when a conversion cannot be performed.

GetCreateInstanceSupported()

Zwraca czy zmiana wartości w tym obiekcie wymaga wywołania CreateInstance(IDictionary) metody w celu utworzenia nowej wartości.Returns whether changing a value on this object requires a call to the CreateInstance(IDictionary) method to create a new value.

GetCreateInstanceSupported(ITypeDescriptorContext)

Zwraca czy zmiana wartości w tym obiekcie wymaga wywołania CreateInstance(IDictionary) do utworzenia nowej wartości przy użyciu określonego kontekstu.Returns whether changing a value on this object requires a call to CreateInstance(IDictionary) to create a new value, using the specified context.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetProperties(ITypeDescriptorContext, Object)

Zwraca kolekcję właściwości typu tablicy określonej przez parametr value przy użyciu określonego kontekstu.Returns a collection of properties for the type of array specified by the value parameter, using the specified context.

GetProperties(ITypeDescriptorContext, Object, Attribute[])

Zwraca kolekcję właściwości typu tablicy określonej przez parametr value, przy użyciu określonego kontekstu i atrybutów.Returns a collection of properties for the type of array specified by the value parameter, using the specified context and attributes.

GetProperties(Object)

Zwraca kolekcję właściwości typu tablicy określonej przez parametr value.Returns a collection of properties for the type of array specified by the value parameter.

GetPropertiesSupported()

Zwraca czy ten obiekt obsługuje właściwości.Returns whether this object supports properties.

GetPropertiesSupported(ITypeDescriptorContext)

Zwraca czy ten obiekt obsługuje właściwości, używając określonego kontekstu.Returns whether this object supports properties, using the specified context.

GetStandardValues()

Zwraca kolekcję wartości standardowych z domyślnego kontekstu dla typu danych, dla którego zaprojektowano ten konwerter typów.Returns a collection of standard values from the default context for the data type this type converter is designed for.

GetStandardValues(ITypeDescriptorContext)

Zwraca kolekcję wartości standardowych dla typu danych, który jest przeznaczony dla tego konwertera typów w przypadku podanego kontekstu formatu.Returns a collection of standard values for the data type this type converter is designed for when provided with a format context.

GetStandardValuesExclusive()

Zwraca czy kolekcja wartości standardowych zwracana z GetStandardValues() jest listą wyłączną.Returns whether the collection of standard values returned from GetStandardValues() is an exclusive list.

GetStandardValuesExclusive(ITypeDescriptorContext)

Zwraca czy kolekcja wartości standardowych zwracana z GetStandardValues() jest listą wykluczającą możliwych wartości przy użyciu określonego kontekstu.Returns whether the collection of standard values returned from GetStandardValues() is an exclusive list of possible values, using the specified context.

GetStandardValuesSupported()

Zwraca czy ten obiekt obsługuje standardowy zestaw wartości, które można pobrać z listy.Returns whether this object supports a standard set of values that can be picked from a list.

GetStandardValuesSupported(ITypeDescriptorContext)

Zwraca czy ten obiekt obsługuje standardowy zestaw wartości, które można pobrać z listy przy użyciu określonego kontekstu.Returns whether this object supports a standard set of values that can be picked from a list, using the specified context.

GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
IsValid(ITypeDescriptorContext, Object)

Zwraca czy dany obiekt wartości jest prawidłowy dla tego typu i dla określonego kontekstu.Returns whether the given value object is valid for this type and for the specified context.

IsValid(Object)

Zwraca czy dany obiekt wartości jest prawidłowy dla tego typu.Returns whether the given value object is valid for this type.

MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

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

Sortuje kolekcję właściwości.Sorts a collection of properties.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też