TypeConverter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan cara terpadu untuk mengonversi jenis nilai ke jenis lain, serta untuk mengakses nilai standar dan subproperti.
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
- Warisan
-
TypeConverter
- Turunan
- Atribut
Contoh
Contoh kode berikut menunjukkan cara membuat instans pengonversi jenis dan mengikatnya ke kelas. Kelas yang mengimplementasikan pengonversi, MyClassConverter
, harus mewarisi dari TypeConverter kelas .
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
Saat Anda memiliki properti yang memiliki enumerasi, periksa untuk melihat apakah nilai enumerasi valid sebelum mengatur properti. Contoh kode berikutnya mengharuskan enumerasi yang disebut MyPropertyEnum
telah dideklarasikan.
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
Penggunaan pengonversi jenis umum lainnya adalah mengonversi objek menjadi string. Contoh kode berikut mencetak nama yang Color disimpan dalam variabel 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))
Anda juga dapat menggunakan pengonversi jenis untuk mengonversi nilai dari namanya, seperti yang ditunjukkan dalam contoh kode berikutnya.
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)
Dalam contoh kode berikut, Anda dapat menggunakan pengonversi jenis untuk mencetak kumpulan nilai standar yang didukung objek.
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
Keterangan
Jenis pengonversi yang paling umum adalah pengonversi ke dan dari representasi teks. Pengonversi jenis untuk kelas terikat ke kelas dengan TypeConverterAttribute. Kecuali atribut ini ditimpa, semua kelas yang mewarisi dari kelas ini menggunakan pengonversi jenis yang sama dengan kelas dasar.
Catatan
Untuk tujuan sistem jenis umum, jangan mengakses pengonversi jenis secara langsung. Sebagai gantinya, akses pengonversi yang sesuai dengan menggunakan TypeDescriptor. Untuk informasi selengkapnya, lihat contoh kode yang disediakan.
Namun, saat menggunakan XAML, prosesor XAML mencari TypeConverterAttribute secara langsung, alih-alih melalui TypeDescriptor. Untuk kasus di mana Anda menginginkan TypeDescriptor instans dari kode, atau tempat Anda membuat instans bersama di sumber daya WPF, dapat diterima untuk membangunnya secara langsung tanpa mereferensikan TypeDescriptor atau refleksi lain dan mengetik dukungan sistem.
Kelas yang berasal dari TypeConverter sering dirujuk sebagai bagian dari bagaimana prosesor XAML mengonversi atribut atau nilai teks inisialisasi dari markup (yang secara inheren merupakan string) dan menghasilkan objek untuk representasi run-time. Penulis jenis kustom yang ingin mendukung perilaku konversi jenis untuk XAML biasanya mengimplementasikan TypeConverter kelas yang mendukung perilaku unik ConvertFrom
mereka sendiri dari string. Perilaku ini memungkinkan konversi jenis dari string yang disediakan sebagai nilai atribut XAML dan menyediakan prosesor XAML dengan dukungan yang diperlukan untuk membuat objek dari string, sehingga objek dapat diproduksi dalam grafik objek yang diurai. Jenis kustom atau anggota jenis kustom ditunjukkan dengan menerapkan TypeConverterAttribute pada definisi, dengan atribut yang mereferensikan implementasi kustom TypeConverter . Untuk informasi selengkapnya, lihat Tipe Pengonversi untuk Gambaran Umum XAML.
Catatan Bagi Inheritor
Warisi dari TypeConverter untuk menerapkan persyaratan konversi Anda sendiri. Saat mewarisi dari kelas ini, Anda dapat mengambil alih metode berikut:
Untuk mendukung konversi jenis kustom, ambil CanConvertFrom(ITypeDescriptorContext, Type)alih metode , , CanConvertTo(ITypeDescriptorContext, Type)ConvertFrom(ITypeDescriptorContext, CultureInfo, Object), dan ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) .
Untuk mengonversi jenis yang harus membuat ulang objek untuk mengubah nilainya, ganti CreateInstance(ITypeDescriptorContext, IDictionary) metode dan GetCreateInstanceSupported(ITypeDescriptorContext) .
Untuk mengonversi jenis yang mendukung properti, ganti GetProperties(ITypeDescriptorContext, Object, Attribute[]) metode dan GetPropertiesSupported(ITypeDescriptorContext) . Jika kelas yang Anda konversi tidak memiliki properti, dan Anda perlu mengimplementasikan properti, Anda dapat menggunakan TypeConverter.SimplePropertyDescriptor kelas sebagai dasar untuk mengimplementasikan deskriptor properti. Ketika Anda mewarisi dari TypeConverter.SimplePropertyDescriptor, Anda harus mengambil GetValue(Object) alih metode dan SetValue(Object, Object) .
Untuk mengonversi jenis yang mendukung nilai standar, ganti GetStandardValues(ITypeDescriptorContext)metode , GetStandardValuesExclusive(ITypeDescriptorContext), GetStandardValuesSupported(ITypeDescriptorContext) dan IsValid(ITypeDescriptorContext, Object) .
Catatan: Jenis turunan Anda mungkin ditandai sebagai internal
atau private
, tetapi instans jenis Anda dapat dibuat dengan TypeDescriptor kelas . Jangan menulis kode yang tidak aman dengan mengasumsikan penelepon tepercaya. Asumsikan bahwa penelepon mungkin membuat instans jenis Anda dalam kepercayaan parsial.
Untuk informasi selengkapnya tentang pengonversi jenis untuk tujuan umum (non-XAML), lihat Cara: Menerapkan Pengonversi Tipe atau Konversi Tipe Umum.
Konstruktor
TypeConverter() |
Menginisialisasi instans baru kelas TypeConverter. |
Metode
CanConvertFrom(ITypeDescriptorContext, Type) |
Mengembalikan apakah konverter ini dapat mengonversi objek dari jenis yang diberikan ke jenis pengonversi ini, menggunakan konteks yang ditentukan. |
CanConvertFrom(Type) |
Mengembalikan apakah konverter ini dapat mengonversi objek dari jenis yang diberikan ke tipe pengonversi ini. |
CanConvertTo(ITypeDescriptorContext, Type) |
Mengembalikan apakah konverter ini dapat mengonversi objek ke jenis yang ditentukan, menggunakan konteks yang ditentukan. |
CanConvertTo(Type) |
Mengembalikan apakah konverter ini dapat mengonversi objek ke tipe yang ditentukan. |
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Mengonversi objek yang diberikan ke jenis konverter ini, menggunakan informasi konteks dan budaya yang ditentukan. |
ConvertFrom(Object) |
Mengonversi nilai yang diberikan ke tipe konverter ini. |
ConvertFromInvariantString(ITypeDescriptorContext, String) |
Mengonversi string yang diberikan ke jenis konverter ini, menggunakan budaya invariant dan konteks yang ditentukan. |
ConvertFromInvariantString(String) |
Mengonversi string yang diberikan ke jenis konverter ini, menggunakan budaya invarian. |
ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Mengonversi teks yang diberikan menjadi objek, menggunakan informasi konteks dan budaya yang ditentukan. |
ConvertFromString(ITypeDescriptorContext, String) |
Mengonversi teks yang diberikan menjadi objek, menggunakan konteks yang ditentukan. |
ConvertFromString(String) |
Mengonversi teks yang ditentukan menjadi objek. |
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Mengonversi objek nilai yang diberikan ke jenis yang ditentukan, menggunakan informasi konteks dan budaya yang ditentukan. |
ConvertTo(Object, Type) |
Mengonversi objek nilai yang diberikan ke jenis yang ditentukan, menggunakan argumen . |
ConvertToInvariantString(ITypeDescriptorContext, Object) |
Mengonversi nilai yang ditentukan menjadi representasi string invarian budaya, menggunakan konteks yang ditentukan. |
ConvertToInvariantString(Object) |
Mengonversi nilai yang ditentukan menjadi representasi string invarian budaya. |
ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Mengonversi nilai yang diberikan menjadi representasi string, menggunakan informasi konteks dan budaya yang ditentukan. |
ConvertToString(ITypeDescriptorContext, Object) |
Mengonversi nilai yang diberikan menjadi representasi string, menggunakan konteks yang diberikan. |
ConvertToString(Object) |
Mengonversi nilai yang ditentukan menjadi representasi string. |
CreateInstance(IDictionary) |
Membuat ulang Object sekumpulan nilai properti yang diberikan untuk objek . |
CreateInstance(ITypeDescriptorContext, IDictionary) |
Membuat instans jenis yang terkait dengan ini TypeConverter , menggunakan konteks yang ditentukan, mengingat sekumpulan nilai properti untuk objek. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetConvertFromException(Object) |
Mengembalikan pengecualian untuk dilemparkan ketika konversi tidak dapat dilakukan. |
GetConvertToException(Object, Type) |
Mengembalikan pengecualian untuk dilemparkan ketika konversi tidak dapat dilakukan. |
GetCreateInstanceSupported() |
Mengembalikan apakah mengubah nilai pada objek ini memerlukan panggilan ke CreateInstance(IDictionary) metode untuk membuat nilai baru. |
GetCreateInstanceSupported(ITypeDescriptorContext) |
Mengembalikan apakah mengubah nilai pada objek ini memerlukan panggilan ke CreateInstance(IDictionary) untuk membuat nilai baru, menggunakan konteks yang ditentukan. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetProperties(ITypeDescriptorContext, Object) |
Mengembalikan kumpulan properti untuk jenis array yang ditentukan oleh parameter nilai, menggunakan konteks yang ditentukan. |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Mengembalikan kumpulan properti untuk jenis array yang ditentukan oleh parameter nilai, menggunakan konteks dan atribut yang ditentukan. |
GetProperties(Object) |
Mengembalikan kumpulan properti untuk jenis array yang ditentukan oleh parameter nilai. |
GetPropertiesSupported() |
Mengembalikan apakah objek ini mendukung properti. |
GetPropertiesSupported(ITypeDescriptorContext) |
Mengembalikan apakah objek ini mendukung properti, menggunakan konteks yang ditentukan. |
GetStandardValues() |
Mengembalikan kumpulan nilai standar dari konteks default untuk tipe data yang dirancang untuk pengonversi jenis ini. |
GetStandardValues(ITypeDescriptorContext) |
Mengembalikan kumpulan nilai standar untuk tipe data yang dirancang untuk pengonversi jenis ini saat disediakan dengan konteks format. |
GetStandardValuesExclusive() |
Mengembalikan apakah kumpulan nilai standar yang dikembalikan adalah GetStandardValues() daftar eksklusif. |
GetStandardValuesExclusive(ITypeDescriptorContext) |
Mengembalikan apakah kumpulan nilai standar yang dikembalikan adalah GetStandardValues() daftar eksklusif dari kemungkinan nilai, menggunakan konteks yang ditentukan. |
GetStandardValuesSupported() |
Mengembalikan apakah objek ini mendukung sekumpulan nilai standar yang dapat dipilih dari daftar. |
GetStandardValuesSupported(ITypeDescriptorContext) |
Mengembalikan apakah objek ini mendukung sekumpulan nilai standar yang dapat dipilih dari daftar, menggunakan konteks yang ditentukan. |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
IsValid(ITypeDescriptorContext, Object) |
Mengembalikan apakah objek nilai yang diberikan valid untuk jenis ini dan untuk konteks yang ditentukan. |
IsValid(Object) |
Mengembalikan apakah objek nilai yang diberikan valid untuk jenis ini. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
SortProperties(PropertyDescriptorCollection, String[]) |
Mengurutkan kumpulan properti. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Berlaku untuk
Lihat juga
- TypeConverterAttribute
- PropertyDescriptorCollection
- TypeConverter.SimplePropertyDescriptor
- TypeConverter.StandardValuesCollection
- Gambaran umum konverter jenis untuk XAML
- Atribut CLR terkait XAML untuk jenis dan pustaka kustom
- Tentukan jenis kustom untuk digunakan dengan Layanan XAML .NET
- Dokumentasi Konseptual Layanan NET XAML