通用类型转换
.NET Framework 提供以下两种机制来将用户定义数据类型(自定义类型)转换为其他数据类型:
通过扩展 System.ComponentModel.TypeConverter 类为自定义类型定义类型转换器,并通过 System.ComponentModel.TypeConverterAttribute 特性使类型转换器与类型关联。
对自定义类型实现 System.IConvertible 接口。
下表重点说明了这两种机制间的差异。
说明 |
---|
只能为已定义了类型转换器的自定义类型提供设计时支持。 |
使用 TypeConverter 转换 |
使用 IConvertible 转换 |
---|---|
在设计时和运行时都可以使用。 |
只能在运行时使用。 |
使用反射,因此比 IConvertible 所支持的转换慢。 |
不使用反射。 |
允许自定义类型和其他数据类型间的双向类型转换。例如,为 MyType 定义的 TypeConverter 允许从 MyType 转换为 String,以及从 String 转换为 MyType。 |
允许从自定义类型转换为其他数据类型,但不允许从其他数据类型转换为自定义类型。 |
说明
类型的 TypeConverter 在类型的外部实现,并通过应用 TypeConverterAttribute 特性与该类型关联。
|
说明
IConvertible 由自定义类型实现。为转换类型,类型的用户对类型调用转换方法(属于 IConvertible 协定)。
|
有关使用类型转换器执行转换的详细信息,请参见 System.ComponentModel.TypeConverter。有关实现类型转换器为自定义类型提供设计时支持的信息,请参见实现类型转换器。