ImageConverter
.NETは組み込みでいろいろな型のコンバータを実装している。例えばSystem.Drawing.IConクラスから、System.Drawing.BitMapクラスに変換するためにImageConverterクラスが用意されており、型のコンバータは以下のように取得できる。
TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap));
型コンバータが取得できたならば、CanConvetFrom(又はCanConvertTo)メソッドにより、特定の型からの変換が可能かどうかを検査し、変換可能な型であれば、ConverFrom(又はConvertTo)メソッドにより変換を実施できる。
このコンバータクラスの変換可能な型を増やそうとして、コンバータクラスを拡張することは簡単に可能だし、このサンプルのように自らが用意した型(MyClass)に、独自のコンバータ(MyClassConverter)を適用するのも簡単なのだが、
[TypeConverter(typeof(MyClassConverter))] public class MyClass { }
既存の型に対して、拡張したコンバータをTypeDescriptor経由で新たに取得する方法は無かったりする。どうしたものか。
※一度書いたエントリだったが、書いていて訳がわからなくなったので全面的に書き直した。