用于
1.字符串到值的转换
2.设计时和运行时的转换
实现:
对于多数基本数据类型(如Int32,Bool,Char,String,枚举类型等),.Net框架已经提供了默认的类型转换器.
默认的类型转换器继承自 System.ComponentModel.TypeConverter类,名为TypeConverterNameConverter
如:属性被设置为 Height="150px",但是其实属性是Unit型.这时候面临的问题,就是将"150px"转换为Unit类型.
页面编译器会自动调用System.Web.UI.WEbControls.UnitConverter完成此转换.
然而,上面的方法只能解决1部分问题.随意要自定义类型转换器.
自定义类型转换器可以分为3种:
值翻译的类型转换器,
向IDE提供标准值列表的类型转换器
实现生成基于构造函数的属性初始化代码的类型转换器
分别介绍:
1.值类型的类型转换器
主要完成String向属性类型的转换
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.ComponentModel;
using
System.Globalization;
using
System.Drawing;
namespace
USERControls
{
public class TestConverter:TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(String))
return true;
else
{
return base.CanConvertFrom(context, sourceType);
}
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value is string)
{
string[] v=((string)value).Split(new char[]{','});
return new Point(int.Parse(v[0]),int.Parse(v[1]));
}
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (destinationType == typeof(string))
{
return ((Point)value).X + "," + ((Point)value).Y;
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
}