一般的な型変換
.NET Framework では、ユーザー定義データ型 (カスタム型) を他のデータ型に変換する方法として次の 2 つの方法があります。
System.ComponentModel.TypeConverter クラスを拡張し、その型コンバータを System.ComponentModel.TypeConverterAttribute 属性を使用してカスタム型に関連付けることによって、カスタム型に対して型コンバータを定義する方法。
カスタム型に System.IConvertible インターフェイスを実装する方法。
この 2 つの方法の相違点を次の表に示します。
注意
カスタム型に対してデザイン時サポートが有効になるのは、そのカスタム型の型コンバータが定義されている場合だけです。
TypeConverter を使用した変換 | IConvertible を使用した変換 |
---|---|
デザイン時と実行時に使用できます。 |
実行時だけ使用できます。 |
リフレクションを使用するため、IConvertible での変換よりも処理に時間がかかります。 |
リフレクションを使用しません。 |
カスタム型から他のデータ型への変換と、他のデータ型からカスタム型への変換という双方向の変換が可能です。たとえば、MyType に定義されている TypeConverter では、MyType から String への変換と、String から MyType への変換を実行できます。 |
カスタム型から他のデータ型への変換は実行できますが、他のデータ型からカスタム型への変換は実行できません。 |
注意 型の TypeConverter はその型の外側で実装されます。型に関連付けるには TypeConverterAttribute 属性を適用します。 |
注意 IConvertible はカスタム型によって実装されます。型を変換するには、その型を使用するときに、その型に対して IConvertible コントラクトの変換メソッドを呼び出します。 |
型コンバータを使用した変換の詳細については、「TypeConverter クラス」を参照してください。カスタム型のデザイン時サポートを提供するための型コンバータの実装については、「型コンバータの実装」を参照してください。