既存のクラスの型コンバータを拡張(または置き換える)
既存のクラスの型コンバータを動的に拡張または置き換える方法を紹介します。
using System; using System.ComponentMode; using System.Drawing; namespace Test { static class Program { [STAThread] static void Main() { // Colorの型コンバータを動的に変更 TypeDescriptionProvider provider = TypeDescriptor.AddAttributes( typeof( Color ), new TypeConverterAttribute( typeof( 自前の型コンバータ ) ) ); // なにか処理 // Colorの型コンバータを元に戻す TypeDescriptor.RemoveProvider( provider, typeof( Color ) ); } } }
↑のようにすることで、
TypeDescriptor.AddAttributesしてからRemoveProviderするまでのあいだ、
TypeDescriptor.GetConverterで取得できる型コンバータを置き換えることができます。
.NET Frameworkの既存の型コンバータを拡張する場合は、
派生クラスを作り、↑の方法で置き換えることで拡張することができます。