TypeConverter Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Değer türlerini diğer türlere dönüştürmenin yanı sıra standart değerlere ve alt özelliklere erişmek için birleşik bir yol sağlar.
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
- Devralma
-
TypeConverter
- Türetilmiş
- Öznitelikler
Örnekler
Aşağıdaki kod örneğinde bir tür dönüştürücü örneğinin nasıl oluşturulacağı ve bir sınıfa nasıl bağlanacağı gösterilmektedir.
MyClassConverter
dönüştürücüsü uygulayan sınıfın TypeConverter sınıfından devralması gerekir.
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
Numaralandırması olan bir özelliğiniz olduğunda, özelliği ayarlamadan önce bir numaralandırma değerinin geçerli olup olmadığını denetleyin. Sonraki kod örneği, MyPropertyEnum
adlı bir numaralandırmanın bildirilmiş olmasını gerektirir.
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
Başka bir yaygın tür dönüştürücü kullanımı, bir nesneyi dizeye dönüştürmektir. Aşağıdaki kod örneği, c
değişkeninde depolanan Color adını yazdırır.
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))
Bir sonraki kod örneğinde gösterildiği gibi, bir değeri adından dönüştürmek için tür dönüştürücüsü de kullanabilirsiniz.
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)
Aşağıdaki kod örneğinde, nesnenin desteklediği standart değerler kümesini yazdırmak için tür dönüştürücüsü kullanabilirsiniz.
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
Açıklamalar
En yaygın dönüştürücü türü, metin gösterimine ve bu gösterimden dönüştüren türdür. Sınıfın tür dönüştürücüsü TypeConverterAttributeile sınıfına bağlıdır. Bu öznitelik geçersiz kılınmadığı sürece, bu sınıftan devralan tüm sınıflar temel sınıfla aynı tür dönüştürücüsü kullanır.
Not
Genel tür sistemi amacıyla, bir tür dönüştürücüye doğrudan erişmeyin. Bunun yerine, TypeDescriptorkullanarak uygun dönüştürücüye erişin. Daha fazla bilgi için sağlanan kod örneklerine bakın.
Ancak, XAML kullanırken XAML işlemcisi TypeDescriptoryerine doğrudan TypeConverterAttribute arar. Koddan bir TypeDescriptor örneği istediğiniz veya WPF kaynaklarında paylaşılan bir örnek oluşturduğunuz durumlarda, TypeDescriptor veya başka bir yansıma ve tür sistemi desteğine başvurmadan doğrudan oluşturmak kabul edilebilir.
TypeConverter türetilen sınıflara genellikle bir XAML işlemcisinin işaretlemeden (doğal olarak bir dizedir) bir öznitelik veya başlatma metin değerini dönüştürme ve çalışma zamanı gösterimi için bir nesne oluşturma işlemi kapsamında başvurulur. XAML için tür dönüştürme davranışını desteklemeyi planlayan özel tür yazarları genellikle bir dizeden kendi benzersiz ConvertFrom
davranışlarını destekleyen bir TypeConverter sınıfı uygular. Bu davranış, XAML öznitelik değeri olarak sağlanan dizeden tür dönüştürmeyi etkinleştirir ve nesnenin ayrıştırılmış nesne grafında oluşturulabilmesi için dizeden nesne oluşturmak için gereken desteği sağlayan bir XAML işlemcisi sağlar. Özel türler veya özel türlerin üyeleri tanımlara TypeConverterAttribute uygulanarak belirtilir ve öznitelik özel TypeConverter uygulamasına başvurur. Daha fazla bilgi için bkz. XAML için Tür Dönüştürücülerine Genel Bakış.
Devralanlara Notlar
Kendi dönüştürme gereksinimlerinizi uygulamak için TypeConverter devralın. Bu sınıftan devraldığınızda, aşağıdaki yöntemleri geçersiz kılabilirsiniz:
Özel tür dönüştürmeyi desteklemek için CanConvertFrom(ITypeDescriptorContext, Type), CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)ve ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) yöntemlerini geçersiz kılın.
Değerini değiştirmek için nesneyi yeniden oluşturması gereken türleri dönüştürmek için CreateInstance(ITypeDescriptorContext, IDictionary) ve GetCreateInstanceSupported(ITypeDescriptorContext) yöntemlerini geçersiz kılın.
Özellikleri destekleyen türleri dönüştürmek için GetProperties(ITypeDescriptorContext, Object, Attribute[]) ve GetPropertiesSupported(ITypeDescriptorContext) yöntemlerini geçersiz kılın. Dönüştürdüğünüz sınıfın özellikleri yoksa ve özellikleri uygulamanız gerekiyorsa, özellik tanımlayıcılarını uygulamak için temel olarak TypeConverter.SimplePropertyDescriptor sınıfını kullanabilirsiniz. TypeConverter.SimplePropertyDescriptor'den devraldığınızda, GetValue(Object) ve SetValue(Object, Object) yöntemlerini geçersiz kılmanız gerekir.
Standart değerleri destekleyen türleri dönüştürmek için GetStandardValues(ITypeDescriptorContext), GetStandardValuesExclusive(ITypeDescriptorContext), GetStandardValuesSupported(ITypeDescriptorContext) ve IsValid(ITypeDescriptorContext, Object) yöntemlerini geçersiz kılın.
Not: Türetilmiş türünüz internal
veya private
olarak işaretlenebilir, ancak türünüzün bir örneği TypeDescriptor sınıfıyla oluşturulabilir. Arayanın güvenilir olduğunu varsayarak güvenli olmayan kod yazmayın. Bunun yerine çağıranların kısmi güven içinde türünüzün örneklerini oluşturabileceğini varsayalım.
Genel (XAML olmayan) amaçlarla tür dönüştürücüleri hakkında daha fazla bilgi için bkz.
Oluşturucular
TypeConverter() |
TypeConverter sınıfının yeni bir örneğini başlatır. |
Yöntemler
CanConvertFrom(ITypeDescriptorContext, Type) |
Bu dönüştürücü, belirtilen bağlamı kullanarak verilen türdeki bir nesneyi bu dönüştürücü türüne dönüştürip dönüştüremeyeceğini döndürür. |
CanConvertFrom(Type) |
Bu dönüştürücü, verilen türdeki bir nesneyi bu dönüştürücü türüne dönüştürebilir mi döndürür. |
CanConvertTo(ITypeDescriptorContext, Type) |
Bu dönüştürücü, belirtilen bağlamı kullanarak nesneyi belirtilen türe dönüştürebilir mi döndürür. |
CanConvertTo(Type) |
Bu dönüştürücüün nesneyi belirtilen türe dönüştürip dönüştüremeyeceğini döndürür. |
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Belirtilen bağlam ve kültür bilgilerini kullanarak verilen nesneyi bu dönüştürücü türüne dönüştürür. |
ConvertFrom(Object) |
Verilen değeri bu dönüştürücü türüne dönüştürür. |
ConvertFromInvariantString(ITypeDescriptorContext, String) |
Sabit kültürü ve belirtilen bağlamı kullanarak verilen dizeyi bu dönüştürücü türüne dönüştürür. |
ConvertFromInvariantString(String) |
Sabit kültürü kullanarak verilen dizeyi bu dönüştürücü türüne dönüştürür. |
ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Belirtilen bağlam ve kültür bilgilerini kullanarak verilen metni bir nesneye dönüştürür. |
ConvertFromString(ITypeDescriptorContext, String) |
Belirtilen bağlamı kullanarak verilen metni bir nesneye dönüştürür. |
ConvertFromString(String) |
Belirtilen metni bir nesneye dönüştürür. |
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Belirtilen bağlam ve kültür bilgilerini kullanarak verilen değer nesnesini belirtilen türe dönüştürür. |
ConvertTo(Object, Type) |
Bağımsız değişkenleri kullanarak verilen değer nesnesini belirtilen türe dönüştürür. |
ConvertToInvariantString(ITypeDescriptorContext, Object) |
Belirtilen bağlamı kullanarak belirtilen değeri kültür sabiti dize gösterimine dönüştürür. |
ConvertToInvariantString(Object) |
Belirtilen değeri kültür sabiti dize gösterimine dönüştürür. |
ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Belirtilen bağlam ve kültür bilgilerini kullanarak verilen değeri dize gösterimine dönüştürür. |
ConvertToString(ITypeDescriptorContext, Object) |
Verilen bağlamı kullanarak verilen değeri dize gösterimine dönüştürür. |
ConvertToString(Object) |
Belirtilen değeri dize gösterimine dönüştürür. |
CreateInstance(IDictionary) |
Nesne için bir özellik değerleri kümesi verilen bir Object yeniden oluşturur. |
CreateInstance(ITypeDescriptorContext, IDictionary) |
Nesne için bir özellik değerleri kümesi verildiğinde, belirtilen bağlamı kullanarak bu TypeConverter ilişkili olduğu türün bir örneğini oluşturur. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetConvertFromException(Object) |
Dönüştürme gerçekleştirilemediğinde oluşturulacak bir özel durum döndürür. |
GetConvertToException(Object, Type) |
Dönüştürme gerçekleştirilemediğinde oluşturulacak bir özel durum döndürür. |
GetCreateInstanceSupported() |
Bu nesnedeki bir değeri değiştirmenin yeni bir değer oluşturmak için CreateInstance(IDictionary) yöntemine çağrı gerekip gerekmediğini döndürür. |
GetCreateInstanceSupported(ITypeDescriptorContext) |
Bu nesnedeki bir değeri değiştirmenin, belirtilen bağlamı kullanarak yeni bir değer oluşturmak için CreateInstance(IDictionary) çağrısı gerekip gerekmediğini döndürür. |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Belirtilen bağlamı ve öznitelikleri kullanarak değer parametresi tarafından belirtilen dizi türü için bir özellik koleksiyonu döndürür. |
GetProperties(ITypeDescriptorContext, Object) |
Belirtilen bağlamı kullanarak değer parametresi tarafından belirtilen dizi türü için bir özellik koleksiyonu döndürür. |
GetProperties(Object) |
değer parametresi tarafından belirtilen dizi türü için bir özellik koleksiyonu döndürür. |
GetPropertiesSupported() |
Bu nesnenin özellikleri destekleyip desteklemediğini döndürür. |
GetPropertiesSupported(ITypeDescriptorContext) |
Belirtilen bağlamı kullanarak bu nesnenin özellikleri destekleyip desteklemediğini döndürür. |
GetStandardValues() |
Bu tür dönüştürücüsünün tasarlandığı veri türü için varsayılan bağlamdan bir standart değerler koleksiyonu döndürür. |
GetStandardValues(ITypeDescriptorContext) |
Bu tür dönüştürücüsü bir biçim bağlamı ile birlikte sağlandığında için tasarlandığı veri türü için standart değerler koleksiyonunu döndürür. |
GetStandardValuesExclusive() |
GetStandardValues() döndürülen standart değerler koleksiyonunun özel kullanım listesi olup olmadığını döndürür. |
GetStandardValuesExclusive(ITypeDescriptorContext) |
GetStandardValues()'den döndürülen standart değerlerin koleksiyonunun, belirtilen bağlamı kullanarak olası değerlerin özel bir listesi olup olmadığını döndürür. |
GetStandardValuesSupported() |
Bu nesnenin listeden seçilebilen standart bir değer kümesini destekleyip desteklemediğini döndürür. |
GetStandardValuesSupported(ITypeDescriptorContext) |
Bu nesnenin, belirtilen bağlam kullanılarak bir listeden seçilebilen standart bir değer kümesini destekleyip desteklemediğini döndürür. |
GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
IsValid(ITypeDescriptorContext, Object) |
Verilen değer nesnesinin bu tür ve belirtilen bağlam için geçerli olup olmadığını döndürür. |
IsValid(Object) |
Verilen değer nesnesinin bu tür için geçerli olup olmadığını döndürür. |
MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
SortProperties(PropertyDescriptorCollection, String[]) |
Bir özellik koleksiyonunu sıralar. |
ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Şunlara uygulanır
Ayrıca bkz.
- TypeConverterAttribute
- PropertyDescriptorCollection
- TypeConverter.SimplePropertyDescriptor
- TypeConverter.StandardValuesCollection
- XAML için tür dönüştürücülerine genel bakış
- Özel türler ve kitaplıklar için XAML ile ilgili CLR özniteliklerini
- .NET XAML Hizmetleri ile kullanılmak üzere özel türler tanımlama
- NET XAML Hizmetleri Kavramsal Belgeleri