TypeConverterクラス

コンストラクタ

特定の型のTypeConverterのインスタンスは、TypeDescriptor.GetConverter()で得られます。

public static System.ComponentModel.TypeConverter GetConverter (Type type);
GetConverter(Type) - TypeDescriptor.GetConverter Method (System.ComponentModel) | Microsoft Learn

メソッド

ConvertFrom()

指定のオブジェクトを、TypeConverterの型へ変換できます。

public object ConvertFrom (object value);
ConvertFrom(Object) - TypeConverter.ConvertFrom Method (System.ComponentModel) | Microsoft Learn

変換に失敗したときには「入力文字列の形式が正しくありません。(Input string was not in a correct format.)」としてFormatExceptionが投げられます。ただし.NET Frameworkのバージョンによっては、「valuetype の有効な値ではありません。(value is not a valid value for type.)」としてExceptionが投げられ、そのInnerException.HResultは0x80131537 (COR_E_FORMAT) です。

オブジェクトがカルチャに依存するならば、それを指定します。

public virtual object ConvertFrom (
    System.ComponentModel.ITypeDescriptorContext context, // 書式コンテキスト
    System.Globalization.CultureInfo culture,             // カルチャ
    object value
    );

ConvertFromString()

指定の文字列を、TypeConverterの型へ変換できます。

public object ConvertFromString (string text);
ConvertFromString(String) - TypeConverter.ConvertFromString Method (System.ComponentModel) | Microsoft Learn
string text = "TRUE";

TypeConverter tc1 = TypeDescriptor.GetConverter(typeof(bool));
object o1 = tc1.ConvertFromString(text); // true

TypeConverter tc2 = TypeDescriptor.GetConverter(typeof(string));
object o2 = tc2.ConvertFromString(text); // "TRUE"

TypeConverter tc3 = TypeDescriptor.GetConverter(typeof(int));
object o3 = tc3.ConvertFromString(text); // FormatException「入力文字列の形式が正しくありません。」

内部的にはConvertFrom(null, null, text)と呼び出すことに等しいです。ConvertFromString - TypeConverter.cs

文字列がカルチャに依存するならば、それを指定します。

string text = "01/02/2000 00:00";
TypeConverter tc = TypeDescriptor.GetConverter(typeof(DateTime));

object o1 = tc.ConvertFromString(text);                                 // {2000/01/02 0:00:00}
object o2 = tc.ConvertFromString(null, CultureInfo.CreateSpecificCulture("en-GB"), text); // {2000/02/01 0:00:00}

ConvertFromInvariantString()

指定の文字列を、インバリアント カルチャを使用してTypeConverterの型へ変換できます。

内部的にはConvertFromString(null, CultureInfo.InvariantCulture, text)と呼び出すことに等しいです。ConvertFromInvariantString - TypeConverter.cs

IsValid()

指定のオブジェクトがこのTypeConverterの型に対して、有効かどうか確認できます。

public bool IsValid (object value);
IsValid(Object) - TypeConverter.IsValid Method (System.ComponentModel) | Microsoft Learn

.NET Framework 4以降、このメソッドはCanConvertFrom()とConvertFrom()からの例外を捕捉します。

内部的にはCanConvertFrom()で変換の可否を確認後、ConvertFrom()で変換を試行し、例外が投げられなければtrueが返されます。よって実際に変換する必要があるならば、直接ConvertFrom()を呼び出して例外を捕捉した方が効率的です。IsValid - TypeConverter.cs

CanConvertFrom()

指定の型から、このTypeConverterの型へ変換可能か確認できます。

public bool CanConvertFrom (Type sourceType);
CanConvertFrom(Type) - TypeConverter.CanConvertFrom Method (System.ComponentModel) | Microsoft Learn
Microsoft Learnから検索