是否可以覆盖现有.net类型的类型描述符?

时间:2011-01-17 12:33:19

标签: .net reflection typeconverter

或更具体地说

1)我可以为属性

分配类型描述符

2)如果是这样,那么在运行时获取类型转换器的最佳方法是什么。

基本上我有使用反射填充的配置对象。到目前为止,这仅适用于简单类型(string,int,datetime),但我想支持将逗号分隔列表转换为List。

到目前为止,我已通过从ConvertableList<T>派生自定义类型“List<T>”并使用我的自定义类型转换器进行装饰来实现此目的。

1 个答案:

答案 0 :(得分:7)

您可以将TypeConverter与现有类型相关联,例如:

    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);