次の方法で共有


TypeConverter クラス

定義

値の型を他の型に変換したり、標準値やサブプロパティにアクセスしたりするための統一された方法を提供します。

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
継承
TypeConverter
派生
属性

次のコード例は、型コンバーターのインスタンスを作成し、それをクラスにバインドする方法を示しています。 コンバーターを実装するクラス ( MyClassConverter) は、 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

列挙体を持つプロパティがある場合は、プロパティを設定する前に、列挙値が有効かどうかを確認します。 次のコード例では、 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($"{nameof(MyProperty)} is not valid");
        }
        // 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

もう 1 つの一般的な型コンバーターの使用方法は、オブジェクトを文字列に変換することです。 次のコード例では、変数cに格納されているColorの名前を出力します。

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))

次のコード例に示すように、型コンバーターを使用して値を名前から変換することもできます。

Color c =  (Color)(TypeDescriptor::GetConverter( Color::typeid )->ConvertFromString( "Red" ));
(Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");
Dim c As Color = CType(TypeDescriptor.GetConverter(GetType(Color)).ConvertFromString("Red"), Color)

次のコード例では、型コンバーターを使用して、オブジェクトがサポートする標準値のセットを出力できます。

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

注釈

最も一般的なコンバーターの種類は、テキスト表現との間で変換されるコンバーターです。 クラスの型コンバーターは、TypeConverterAttributeを使用してクラスにバインドされます。 この属性がオーバーライドされない限り、このクラスから継承するすべてのクラスは、基底クラスと同じ型コンバーターを使用します。

一般的な型システムの目的では、型コンバーターに直接アクセスしないでください。 代わりに、 TypeDescriptorを使用して適切なコンバーターにアクセスします。 詳細については、提供されているコード例を参照してください。

ただし、XAML を使用する場合、XAML プロセッサは、TypeDescriptorではなく、TypeConverterAttributeを直接検索します。 コードから TypeDescriptor インスタンスが必要な場合や、WPF リソースに共有インスタンスを作成する場合は、TypeDescriptor やその他のリフレクションと型のシステム サポートを参照せずに直接構築できます。

TypeConverterから派生したクラスは、XAML プロセッサがマークアップ (本質的に文字列) から属性または初期化テキスト値を変換し、実行時表現用のオブジェクトを生成する方法の一部として参照されることがよくあります。 XAML の型変換動作をサポートするカスタム型作成者は、通常、文字列からの独自の一意のConvertFrom動作をサポートするTypeConverter クラスを実装します。 この動作により、XAML 属性値として提供される文字列からの型変換が可能になり、解析されたオブジェクト グラフでオブジェクトを生成できるように、文字列からオブジェクトを作成するために必要なサポートが XAML プロセッサに提供されます。 カスタム型またはカスタム型のメンバーは、カスタム TypeConverter実装を参照する属性を使用して、定義にTypeConverterAttributeを適用することによって示されます。 詳細については、「XAML の 型コンバーターの概要」を参照してください。

注意 (継承者)

TypeConverterから継承して、独自の変換要件を実装します。 このクラスから継承する場合は、次のメソッドをオーバーライドできます。

注: 派生型は internal または privateとしてマークされている場合がありますが、 TypeDescriptor クラスを使用して型のインスタンスを作成できます。 呼び出し元が信頼されていると仮定して、安全でないコードを記述しないでください。 代わりに、呼び出し元が部分信頼で型のインスタンスを作成する可能性があるとします。

コンストラクター

名前 説明
TypeConverter()

TypeConverter クラスの新しいインスタンスを初期化します。

メソッド

名前 説明
CanConvertFrom(ITypeDescriptorContext, Type)

指定したコンテキストを使用して、このコンバーターが指定した型のオブジェクトをこのコンバーターの型に変換できるかどうかを返します。

CanConvertFrom(Type)

このコンバーターが、指定された型のオブジェクトをこのコンバーターの型に変換できるかどうかを返します。

CanConvertTo(ITypeDescriptorContext, Type)

指定したコンテキストを使用して、このコンバーターがオブジェクトを指定した型に変換できるかどうかを返します。

CanConvertTo(Type)

このコンバーターがオブジェクトを指定した型に変換できるかどうかを返します。

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

指定したコンテキストとカルチャ情報を使用して、指定されたオブジェクトをこのコンバーターの型に変換します。

ConvertFrom(Object)

指定された値をこのコンバーターの型に変換します。

ConvertFromInvariantString(ITypeDescriptorContext, String)

インバリアント カルチャと指定したコンテキストを使用して、指定された文字列をこのコンバーターの型に変換します。

ConvertFromInvariantString(String)

インバリアント カルチャを使用して、指定された文字列をこのコンバーターの型に変換します。

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

指定したコンテキストとカルチャ情報を使用して、指定されたテキストをオブジェクトに変換します。

ConvertFromString(ITypeDescriptorContext, String)

指定したコンテキストを使用して、指定されたテキストをオブジェクトに変換します。

ConvertFromString(String)

指定したテキストをオブジェクトに変換します。

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

指定したコンテキストとカルチャ情報を使用して、指定した値オブジェクトを指定した型に変換します。

ConvertTo(Object, Type)

引数を使用して、指定した値オブジェクトを指定した型に変換します。

ConvertToInvariantString(ITypeDescriptorContext, Object)

指定したコンテキストを使用して、指定した値をカルチャに依存しない文字列表現に変換します。

ConvertToInvariantString(Object)

指定した値をカルチャに依存しない文字列表現に変換します。

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

指定したコンテキストとカルチャ情報を使用して、指定された値を文字列形式に変換します。

ConvertToString(ITypeDescriptorContext, Object)

指定されたコンテキストを使用して、指定された値を文字列形式に変換します。

ConvertToString(Object)

指定した値を文字列形式に変換します。

CreateInstance(IDictionary)

オブジェクトのプロパティ値のセットを指定して、 Object を再作成します。

CreateInstance(ITypeDescriptorContext, IDictionary)

オブジェクトのプロパティ値のセットを指定すると、指定したコンテキストを使用して、この TypeConverter が関連付けられている型のインスタンスを作成します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetConvertFromException(Object)

変換を実行できない場合にスローする例外を返します。

GetConvertToException(Object, Type)

変換を実行できない場合にスローする例外を返します。

GetCreateInstanceSupported()

このオブジェクトの値を変更するには、新しい値を作成するために CreateInstance(IDictionary) メソッドの呼び出しが必要かどうかを返します。

GetCreateInstanceSupported(ITypeDescriptorContext)

このオブジェクトの値を変更するために、指定したコンテキストを使用して新しい値を作成するために CreateInstance(IDictionary) の呼び出しが必要かどうかを返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

指定したコンテキストと属性を使用して、値パラメーターで指定された配列の型のプロパティのコレクションを返します。

GetProperties(ITypeDescriptorContext, Object)

指定したコンテキストを使用して、値パラメーターで指定された配列の型のプロパティのコレクションを返します。

GetProperties(Object)

value パラメーターで指定された配列の型のプロパティのコレクションを返します。

GetPropertiesSupported()

このオブジェクトがプロパティをサポートしているかどうかを返します。

GetPropertiesSupported(ITypeDescriptorContext)

指定したコンテキストを使用して、このオブジェクトがプロパティをサポートするかどうかを返します。

GetStandardValues()

この型コンバーターが設計されているデータ型の既定のコンテキストから標準値のコレクションを返します。

GetStandardValues(ITypeDescriptorContext)

この型コンバーターがフォーマット コンテキストで指定された場合に設計されたデータ型の標準値のコレクションを返します。

GetStandardValuesExclusive()

GetStandardValues()から返される標準値のコレクションが排他的リストであるかどうかを返します。

GetStandardValuesExclusive(ITypeDescriptorContext)

指定したコンテキストを使用して、 GetStandardValues() から返される標準値のコレクションが使用可能な値の排他的リストであるかどうかを返します。

GetStandardValuesSupported()

このオブジェクトが、リストから選択できる標準の値セットをサポートしているかどうかを返します。

GetStandardValuesSupported(ITypeDescriptorContext)

このオブジェクトが、指定したコンテキストを使用してリストから選択できる標準の値セットをサポートしているかどうかを返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsValid(ITypeDescriptorContext, Object)

指定した値オブジェクトがこの型と指定したコンテキストに対して有効かどうかを返します。

IsValid(Object)

指定された値オブジェクトがこの型に対して有効かどうかを返します。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
SortProperties(PropertyDescriptorCollection, String[])

プロパティのコレクションを並べ替えます。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください