次の方法で共有


TypeConverter クラス

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

この型のすべてのメンバの一覧については、TypeConverter メンバ を参照してください。

System.Object
   System.ComponentModel.TypeConverter
      派生クラス

<ComVisible(True)>
Public Class TypeConverter
[C#]
[ComVisible(true)]
public class TypeConverter
[C++]
[ComVisible(true)]
public __gc class TypeConverter
[JScript]
public
   ComVisible(true)
class TypeConverter

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

最も一般的な型コンバータは、テキスト形式への変換と、その逆の変換を行います。クラスの型コンバータは、 TypeConverterAttribute を使用してそのクラスに関連付けられます。この属性がオーバーライドされない限り、このクラスから継承されるすべてのクラスは、基本クラスと同じ型コンバータを使用します。

メモ   型コンバータには直接アクセスしないでください。代わりに、 TypeDescriptor を使用して、該当するコンバータにアクセスします。詳細については、コード例を参照してください。

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

型コンバータの詳細については、 型コンバータの実装 または 一般的な型変換 のトピックを参照してください。

使用例

[Visual Basic, C#, C++] 型コンバータのインスタンスを作成し、そのインスタンスをクラスに関連付ける方法を次に示します。型コンバータ MyClassConverter を実装するクラスは、 TypeConverter クラスから継承する必要があります。

 
<TypeConverter(GetType(MyClassConverter))> _
Public Class Class1
    ' Insert code here.
End Class 'MyClass


[C#] 
[TypeConverter(typeof(MyClassConverter))]
 public class MyClass {
    // Insert code here.
}

[C++] 
public:
    [TypeConverter(__typeof(Sample::MyClassConverter))]
     __gc class MyClass {
        // Insert code here.
    };

[Visual Basic, C#, C++] 列挙型のプロパティがある場合は、プロパティを設定する前に列挙値が有効かどうかを確認します。次のコード例は、 MyPropertyEnum という名前の列挙体が宣言されていることを前提にしています。

 

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


[C#] 
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.
    }
 }

[C++] 
public:
    __property void set_MyProperty( MyPropertyEnum value ) {
           // Checks to see if the value passed is valid.
           if (!TypeDescriptor::GetConverter(__typeof(MyPropertyEnum))->IsValid(__box(value))) {
              throw new ArgumentException();
           }
           // The value is valid. Insert code to set the property.
        }
     

[Visual Basic, C#, C++] 型コンバータは、オブジェクトから文字列への変換にも一般的に使用されます。変数 c に格納されている Color の名前を出力する例を次に示します。

 
Dim c As Color = Color.Red
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))

[C#] 
Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));

[C++] 
Color c = Color::Red;
Console::WriteLine(TypeDescriptor::GetConverter( __box(c))->ConvertToString(__box(c)));

[Visual Basic, C#, C++] また、次のコード例に示すように、名前から値への変換にも型コンバータを使用できます。

 
Dim c As Color = CType(TypeDescriptor.GetConverter(GetType(Color)).ConvertFromString("Red"), Color)

[C#] 
Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");

[C++] 
Color c = *dynamic_cast<__box Color*>(TypeDescriptor::GetConverter(__typeof(Color))->ConvertFromString(S"Red"));

[Visual Basic, C#, C++] この例では、型コンバータを使用して、オブジェクトがサポートする一連の標準値も出力できます。

 
Dim c As Color
For Each c In  TypeDescriptor.GetConverter(GetType(Color)).GetStandardValues()
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))
Next c

[C#] 
foreach(Color c in TypeDescriptor.GetConverter(typeof(Color)).GetStandardValues()) {
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
 }

[C++] 
System::Collections::IEnumerator* myEnum = TypeDescriptor::GetConverter(__typeof(Color))->GetStandardValues()->GetEnumerator();
while (myEnum->MoveNext())
{
    Color c = *__try_cast<__box Color*>(myEnum->Current);
    Console::WriteLine(TypeDescriptor::GetConverter( __box(c))->ConvertToString(__box(c)));
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.ComponentModel

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System (System.dll 内)

参照

TypeConverter メンバ | System.ComponentModel 名前空間 | TypeConverterAttribute | PropertyDescriptorCollection | TypeConverter.SimplePropertyDescriptor | TypeConverter.StandardValuesCollection