ASP.net控件开发系列之五
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-21
Context context, Type destinationType) {//string能不能转换成目标类 if ((destinationType == typeof(string)) || (destinationType == typeof(InstanceDescriptor))) {//System.ComponentModel.Design.Serialization.InstanceDescriptor //提供创建对象的实例所需的信息,此处返回转换器关联类型的实例 return true; } return base.CanConvertTo(context, destinationType);//只有实现了ConverTo目标类型才能为TRUE(我们在后面实现了string),如果String可以转换成目标类型, //那么也会为TRUE,因为这里我们可以将之转成String,再调用String的转换。 } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {//从一种类型转换成我们的类型 if (value == null) { return new YourType();//空值来,默认实现 } if (value is string) {//如果是string,定制转化逻辑 string s = (string)value; if (s.Length == 0) { return new YourType(); } //以下的例子实现"20,30"转换成new YourType(20,30),分两步,分隔,变Int string[] parts = s.Split(culture.TextInfo.ListSeparator[0]); if (parts.Length != 2) { throw new ArgumentException("Invalid YourType", "value"); } TypeConverter intConverter = TypeDescriptor.GetConverter(typeof(Int32)); return new YourType((int)intConverter.ConvertFromString(context, culture, parts[0]), (int)intConverter.ConvertFromString(context, culture, parts[1])); } return base.ConvertFrom(context, culture, value);//还是要调用一下基类的方法。 } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {//我们的类型转换成其它类型 if (value != null) {//先确定源类型是不我们的要转的类型。 if (!(value is YourType)) { throw new ArgumentException("Invalid YourType", "value"); } } if (destinationType == typeof(string)) {//转成string的逻辑 if (value == null) { return String.Empty; } YourType yourType = (YourType)value; //以下的例子将yourType的两个int属性变成"属性值1,属性值2"的字符串。 TypeConverter intConverter = TypeDescriptor.GetConverter(typeof(Int32)); return String.Join(culture.TextInfo.ListSeparator, new string[] { intConverter.ConvertToString(context, culture, yourType.Value_1), intConverter.ConvertToString(context, culture, yourType.Value_2) }); } else if (destinationType == typeo |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: ASP.NET中随机数生成及应用下一篇: 关于ASP.NET在IIS一些问题的经验总结
关于ASP.net控件开发系列之五的所有评论