一般的な型変換
.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 コントラクトの変換メソッドを呼び出します。
|
型コンバーターを使用した変換の詳細については、System.ComponentModel.TypeConverter を参照してください。カスタム型のデザイン時サポートを提供するための型コンバーターの実装については、「型コンバーターの実装」を参照してください。