2011-01-17 5 views
3

以上、具体的既存の.netタイプのタイプ記述子をオーバーライドすることは可能ですか?もしそうなら

1)私は)財産

2の型記述子を割り当てることができ、実行時に型コンバータを得るための最善の方法は何ですか。

基本的に私はリフレクションを使用して設定された構成オブジェクトを持っています。今のところこれは単純な型(string、int、datetime)でのみ機能しますが、コンマ区切りリストをListに変換することをサポートしたいと考えていました。

これまでのところ、カスタムタイプ「ConvertableList<T>」をList<T>から派生させ、カスタムタイプコンバータでそれを飾ることでこれを達成しました。

答えて

7

あなたが好きな既存のタイプにTypeConverter Sを関連付けることができます:に続いて(起動中のどこか)

TypeDescriptor.AddAttributes(typeof(List<int>), 
     new TypeConverterAttribute(typeof(MyTypeConverter))); 

コンバータを取得し、標準のコードは動作するはずです:

TypeConverter conv = TypeDescriptor.GetConverter(typeof(List<int>)); 

または:

object obj = new List<int>(); 
    ... 
    TypeConverter conv = TypeDescriptor.GetConverter(obj); 
+0

私の記述子は常にデフォルトより優先されますか? –

+1

@Ben - 'TypeDescriptor'を使用するコードであれば、yesです。しかし、いくつかのコードがIList(非汎用)と何らかの特殊ケースをチェックすることを決定する可能性があります。私は特別なケースのコードを変更することはできません。 –

+0

グレートマーク、ご清聴ありがとうございます。 –

関連する問題