特定の型のTypeConverterのインスタンスは、TypeDescriptor.GetConverter()で得られます。
public static System.ComponentModel.TypeConverter GetConverter (Type type);GetConverter(Type) - TypeDescriptor.GetConverter Method (System.ComponentModel) | Microsoft Learn
指定のオブジェクトを、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のバージョンによっては、「value は type の有効な値ではありません。(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 );
指定の文字列を、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}
指定の文字列を、インバリアント カルチャを使用してTypeConverterの型へ変換できます。
内部的にはConvertFromString(null, CultureInfo.InvariantCulture, text)
と呼び出すことに等しいです。ConvertFromInvariantString - TypeConverter.cs
指定のオブジェクトがこの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
指定の型から、このTypeConverterの型へ変換可能か確認できます。
public bool CanConvertFrom (Type sourceType);CanConvertFrom(Type) - TypeConverter.CanConvertFrom Method (System.ComponentModel) | Microsoft Learn