日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
代碼之美:強(qiáng)大的構(gòu)造方法重載

一直在看“代碼之丑”這個文章系列,心想,為得不來個“代碼之美”呢,呵呵,今天做項(xiàng)目時,認(rèn)為我的驗(yàn)證方法代碼邏輯比較漂亮,所以就摘出來分享一下吧,今天講的是方法的重載,事實(shí)上主要是說一下構(gòu)造方法的重載。

創(chuàng)新互聯(lián)是一家專業(yè)提供中牟企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為中牟眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

構(gòu)造方法不同于其它方法,它沒有返回值,

  • 可以有參數(shù)列表,
  • 可以是public,private,protected,internal等去修飾它,
  • 可以是加了static的類型構(gòu)造方法,也可以是一個實(shí)例構(gòu)造方法,
  • 可以自己去重載自己的構(gòu)造方法
  • 可以去重載基類的構(gòu)造方法

美1:重載自己

 
 
 
 
  1. /// 
  2.         /// 代參數(shù)的
  3.         /// 
  4.         /// 
  5.         /// 
  6.         public User_Info(int userID, string userName)
  7.         {
  8.             this.UserID = UserID;
  9.             this.UserName = UserName;
  10.         }
  11.         /// 
  12.         /// 不代參數(shù),但可以為其它構(gòu)造方法傳參數(shù)值的
  13.         /// 
  14.         public User_Info() : this(1, "test") { }

美2:重載基類,這在我們的面向?qū)ο蟮某绦蜷_發(fā)中用的是最多的

 
 
 
 
  1. [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
  2.     public class EmailAttribute : EntityValidationAttribute
  3.     {
  4.         /// 
  5.         /// 返回指定格式的錯誤
  6.         /// 
  7.         /// 
  8.         /// 
  9.         public EmailAttribute(MessageType messageType, params object[] args) :
  10.             base(messageType, args) { }
  11.         /// 
  12.         /// 自定義的錯誤
  13.         /// 
  14.         /// 錯誤說明
  15.         public EmailAttribute(string errMessage)
  16.             : base(errMessage) { }

這是選自我驗(yàn)證組件的一段代碼,它很好的體現(xiàn)了對基類構(gòu)造方法的重載。

看下面的代碼也屬于這種情況

 
 
 
 
  1. /// 
  2.      /// 通用驗(yàn)證基類
  3.      /// 
  4.      public abstract class EntityValidationAttribute : ValidationAttribute
  5.      {
  6.          #region Constructors
  7.          /// 
  8.          /// 定義系統(tǒng)某種規(guī)則的錯誤消息
  9.          /// 
  10.          /// 
  11.          /// 
  12.          public EntityValidationAttribute(MessageType messageId, params object[] args) :
  13.              base(() => MessageManager.Current.GetMessage(messageId, args)) { }
  14.  
  15.          /// 
  16.          /// 支持自定義的錯誤消息
  17.          /// 
  18.          /// 
  19.          public EntityValidationAttribute(string errMessage) : base(errMessage) { }
  20.          #endregion

它的基類ValidationAttribute的構(gòu)造方法會接受一個Func的委托,意思是說,子類可以根據(jù)自己的需要為它傳遞一個方法,但返回值必須是string類型,而上面的寫法

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

它是指一個匿名方法,也是符合基類的Func的方法簽名的,即“無參數(shù)”,它所回調(diào)的方法是GetMessage,它有兩個參數(shù),由子類在實(shí)例化時提供的。

ValidationAttribute這個類是System.ComponentModel.DataAnnotations下的驗(yàn)證功能的基類,我們在繼承它的時候,為它的傳遞string變量或者Func的委托,它都會將返回

值賦值ErrorMessage這個屬性,它在外界就可以被訪問到的。


當(dāng)前題目:代碼之美:強(qiáng)大的構(gòu)造方法重載
標(biāo)題路徑:http://www.dlmjj.cn/article/dpopjjs.html