ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg王国 ACG玩家 品牌设计 上海网站建设
求创科技
网站建设
中国互联
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 编程开发 >> .net >> Asp.net下的对象成员数据绑定器实现

Asp.net下的对象成员数据绑定器实现 (2)

来源:中国设计秀    作者:    点击:25     加入收藏    发表评论
0
顶一下

 //从配置文件加载转换器映射,如果配置存在相同类型转器就取代原有转换器
  
   static void LoadConfig()
  
   {
  
   //Load Config
  
   // <converter type="System.Int32",value="HFSoft.Binder.ToByte"
  
   }
  
  为了方便使用可以在工厂中硬编码配置内部基础类型;因为转换情况的不确定,所以允许通过配置文件的方式引入不同情况的类型转换器。

     可以扩展性的Custom Attribute
   虽然工厂可以达到转换接口的可配置性,但实际上很难达到应用要求;在某些情况下类型转换器只是在某些对象成员中有效(虽然配置文件也可以达到期要求,但在配置文件中定义这么小的粒度并不是好的选择);通过Attribute给相关Property指定类型转换器非常适合。
  
   /// <summary>
  
   /// 用于特殊情况下描述对象具体成员的转换器
  
   /// </summary>
  
   [AttributeUsage(AttributeTargets.Property)]
  
   public class ConverterAttribute : Attribute, IStringConverter
  
   {
  
   public ConverterAttribute(Type convertertype)
  
   {
  
   mConverterType = convertertype;
  
   }
  
   public ConverterAttribute(Type convertertype, string defvalue)
  
   {
  
   mConverterType = convertertype;
  
   mDefaultValue = defvalue;
  
   }
  
   private Type mConverterType;
  
   public Type ConverterType
  
   {
  
   get
  
   {
  
   return mConverterType;
  
   }
  
   }
  
  
  
   private String mDefaultValue;
  
   public String DefaultValue
  
   {
  
   get
  
   {
  
   return mDefaultValue;
  
   }
  
   set
  
   {
  
   mDefaultValue = value;
  
   }
  
   }
  
   protected IStringConverter CreateInstance()
  
   {
  
   if (mConverters.ContainsKey(ConverterType))
  
   return mConverters[ConverterType];
  
   lock (typeof(ConverterAttribute))
  
   {
  
   if (!mConverters.ContainsKey(ConverterType))
  
   {
  
   mConverters.Add(ConverterType, (IStringConverter)Activator.CreateInstance(ConverterType));
  
   }
  
   return mConverters[ConverterType];
  
   }
  
  
  
   }
  
   static IDictionary<Type, IStringConverter> mConverters = new Dictionary<Type, IStringConverter>(); 
   
   #region IStringConverter 成员 
   
   public object ConvertTo(string value, out bool succeeded)
  
   {
  
   string newvalue = value != null ? value : DefaultValue;
  
   return CreateInstance().ConvertTo(newvalue, out succeeded);
  
   } 
   
   #endregion
  
   } 
   

[1] [2] [3]
2007-03-09 17:15:00    出处:
Google
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口