当前位置: 网学 > 编程文档 > 其他类别 > 正文

代码之美:强大的构造方法重载

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
是选自我验证组件的一段代码,它很好的体现了对基类构造方法的重载。

看下面的代码也属于这种情况

  1. /// <summary>  
  2.      /// 通用验证基类  
  3.      /// </summary>  
  4.      public abstract class EntityValidationAttribute : ValidationAttribute  
  5.      {  
  6.          #region Constructors  
  7.          /// <summary>  
  8.          /// 定义系统某种规则的错误消息  
  9.          /// </summary>  
  10.          /// <param name="messageId"></param>  
  11.          /// <param name="args"></param>  
  12.          public EntityValidationAttribute(MessageType messageId, params object[] args) :  
  13.              base(() => MessageManager.Current.GetMessage(messageId, args)) { }  
  14.    
  15.          /// <summary>  
  16.          /// 支持自定义的错误消息  
  17.          /// </summary>  
  18.          /// <param name="errMessage"></param>  
  19.          public EntityValidationAttribute(string errMessage) : base(errMessage) { }  
  20.          #endregion 

它的基类ValidationAttribute的构造方法会接受一个Func<string>的委托,意思是说,子类可以根据自己的需要为它传递一个方法,但返回值必须是string类型,而上面的写法

  1. () => MessageManager.Current.GetMessage(messageId, args) 

它是指一个匿名方法,也是符合基类的Func的方法签名的,即“无参数”,它所回调的方法是GetMessage,它有两个参数,由子类在实例化时提供的。

ValidationAttribute这个类是System.ComponentModel.DataAnnotations下的验证功能的基类,我们在继承它的时候,为它的传递string变量或者Func<string>的委托,它都会将返回

值赋值ErrorMessage这个属性,它在外界就可以被访问到的。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjkAAADlCAIAAAA+6nFHAAAcfklEQVR4nO2dO47cuBZAuR56E28FzrgRb4C9BQe1AmdMnBkODFRqOFbBwEzqqDCRN8AXlD6keClRqo+o1jkYYKpZ/EmieHQptlv5PG9vbxPfvnsOfvgAAPWgJr47+GR98MMHAKgHXJXl4IcPAFAPz3fV9Xxyl+Dni3s7na9Jtot7m0Qq81xwFQBAJbzKVdfzSVRQpLGwgPf+4l4vqABcBQBQCYtcdXGCXMTE4LswLLq4t05DSZ

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号