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

标签 .net reflection typeconverter

或更具体地说

1) 我可以为属性分配类型描述符吗

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

基本上我有使用反射填充的配置对象。到目前为止,这仅适用于简单类型(字符串、整数、日期时间),但我想支持将逗号分隔列表转换为列表。

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

最佳答案

您可以将 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);

关于.net - 是否可以覆盖现有 .net 类型的类型描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713177/

相关文章:

ruby-on-rails - Ruby:使用字符串访问成员变量(反射)

c# - 克隆/复制获取访问器主体到新类型

c# - 将字符串解析为动态类型的最快、高效、优雅的方式?

c# - 文件传输套接字编程

.net - 在混合托管/非托管环境中支持多种架构的最佳方式是什么?

c# - 如何检查方法是否具有属性

c# - 无法从 'string' 转换为 'system.collections.generic.list string'

c# - 使用 C# 创建 3D 矩形

c# - 使用 Matlab 从 C# 控制台应用程序创建图形或绘图?

c++ - 如何将 0(且仅 0)转换为我的数据结构