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経由で新たに取得する方法は無かったりする。どうしたものか。
※一度書いたエントリだったが、書いていて訳がわからなくなったので全面的に書き直した。