日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

.NET擴(kuò)展方法使用實(shí)例詳解

瀏覽:307日期:2022-06-08 14:23:31

擴(kuò)展方法有幾個(gè)必要前提:

  • 擴(kuò)展方法所在的類必須是靜態(tài)類
  • 擴(kuò)展方法本身必須是靜態(tài)方法
  • 擴(kuò)展方法參數(shù)中,對(duì)類型的擴(kuò)展參數(shù)前必須加this關(guān)鍵字

擴(kuò)展基本數(shù)據(jù)類型

針對(duì)DateTime類型寫一個(gè)擴(kuò)展方法。

    public static class CalculateAge    {public static int Age(this DateTime date, DateTime birthDate){    int birthYear = birthDate.Year;    int currentYear = DateTime.Now.Year;    if (birthYear >= currentYear)    {throw new Exception("請(qǐng)輸入正確的出生日期~~");    }    else    {return currentYear - birthYear - 1;    }}    }

客戶端調(diào)用。

    class Program    {static void Main(string[] args){    try    {Console.WriteLine("請(qǐng)輸入您的出生年份");DateTime d = Convert.ToDateTime(Console.ReadLine());DateTime dateInstance = new DateTime();int age = dateInstance.Age(d);Console.WriteLine("您當(dāng)前的年齡是:{0}", age);Console.ReadKey();    }    catch (Exception ex)    {Console.WriteLine(ex.Message);    }}    }

擴(kuò)展接口

有這樣的一個(gè)產(chǎn)品模型。

    public class Product    {public int Id { get; set; }public string Name { get; set; }    }

接口提供獲取產(chǎn)品集合的方法。

    public interface IProductService    {IEnumerable<Product> GetProducts();    }

接口有2個(gè)實(shí)現(xiàn)類。

    public class FoodProducts : IProductService    {public IEnumerable<Product> GetProducts(){    return new List<Product>    {new Product(){Id = 1, Name = "餅干"},new Product(){Id = 2, Name = "牛奶"}    };}    }    public class ElectronicProducts : IProductService    {public IEnumerable<Product> GetProducts(){    return new List<Product>    {new Product(){Id = 3, Name = "電風(fēng)扇"},new Product(){Id = 4, Name = "空調(diào)"}    };}    }

針對(duì)接口擴(kuò)展方法。

    public static class ProductServiceExtension    {public static IEnumerable<Product> GetProductsById(this IProductService productService, int id){    return productService.GetProducts().Where(p => p.Id == id);}    }

客戶端調(diào)用。

    class Program    {static void Main(string[] args){    IProductService productService = new FoodProducts();    Console.WriteLine("食物類別下總數(shù)量是;{0}", productService.GetProducts().Count());    try    {Console.WriteLine("找到的產(chǎn)品名稱是:{0}", (productService.GetProductsById(1).SingleOrDefault()).Name);    }    catch (Exception ex)    {Console.WriteLine(ex.Message);    }    Console.ReadKey();}    }

擴(kuò)展包含私有字段的類 使用反射獲取類的私有字段

擴(kuò)展一個(gè)類的時(shí)候,有時(shí)候會(huì)用到該類的私有字段,我們可以通過反射拿到類的私有字段。

有這樣的一個(gè)類,包含私有字段和公共方法。

    {private DateTime _currentTime;public void SetTime(){    _currentTime = DateTime.Now;}public string GetMsg(){    if (_currentTime.Hour < 12)    {return "上午好~~";    }    else    {return "下午好~~";    }}    }

我們希望擴(kuò)展出一個(gè)顯示英文信息的問候。

    public static class DisplayMessageExtensions    {public static string GetLocalMsg(this DisplayMessage message, string country){    //通過反射拿到私有字段    var privateField = typeof (DisplayMessage).GetField("_currentTime",BindingFlags.Instance | BindingFlags.NonPublic);    //獲取該私有字段的值    var currentDateTime = (DateTime)privateField.GetValue(message);    if (country == "USA" && currentDateTime.Hour < 12)    {return "Good Morning";    }    else    {return "Good Evening";    }}    }

客戶端調(diào)用。

    class Program    {static void Main(string[] args){    DisplayMessage displayMessage = new DisplayMessage();    displayMessage.SetTime();    Console.WriteLine("來自中國的問候是:{0}", displayMessage.GetMsg());    Console.WriteLine("美國人怎么問候?");    Console.WriteLine("來自美國的問候是:{0}", displayMessage.GetLocalMsg("USA"));    Console.ReadKey();}    }

擴(kuò)展一個(gè)類的私有嵌套類 通過反射

當(dāng)一個(gè)類有嵌套私有類的時(shí)候,擴(kuò)展該類的時(shí)候,有時(shí)候會(huì)用到該類的嵌套私有類,我們可以通過反射擴(kuò)展私有嵌套類。

有這樣的一個(gè)ParentClass類,包含一個(gè)私有嵌套類ChildClass.

    public class ParentClass    {public string MessageFromParent(){    return "from parent~~";}private class ChildClass{    public string MessageFromChild()    {return "from child~";    }}    }

現(xiàn)在要擴(kuò)展這個(gè)私有嵌套類,為其添加一個(gè)轉(zhuǎn)換成大寫的方法,通過反射來完成。

    public static class NestedClassExtension    {public static string ToUppeerCaseParentMessage(this ParentClass parent){    return parent.MessageFromParent().ToUpper();}public static string ToUpperCaseChildMessage(this object o){    var childUpper = "";    //通過反射獲取父類中的私有嵌套類    var privateClass = typeof (ParentClass).GetNestedType("ChildClass", BindingFlags.NonPublic);    if (o.GetType() == privateClass)    {//通過反射獲取嵌套私有類的方法var callMethod = privateClass.GetMethod("MessageFromChild");childUpper = (callMethod.Invoke(o, null) as string).ToUpper();    }    return childUpper;}    }

客戶端,首先通過反射獲取私有嵌套類的type類型,然后運(yùn)用私有嵌套類的擴(kuò)展方法。

try{    ParentClass p = new ParentClass();    //通過反射獲取父類私有嵌套類    var privateClass = typeof (ParentClass).GetNestedType("ChildClass", BindingFlags.NonPublic);    //通過反射創(chuàng)建父類私有嵌套類的實(shí)例    var c = Activator.CreateInstance(privateClass);    //通過反射獲取父類私有嵌套類的方法    //var callMethod = privateClass.GetMethod("MessageFromChild");    Console.WriteLine(c.ToUpperCaseChildMessage());}catch (Exception ex){    Console.WriteLine(ex.Message);   }Console.ReadKey();

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

標(biāo)簽: ASP.NET
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜臀a∨国产成人精品| 麻豆精品久久| 成人免费网站www网站高清| 精品成人18| 精品国产三区在线| 粉嫩av一区二区三区四区五区 | 精品三级在线| 国产精品中文字幕制服诱惑| 国产精品一区二区三区四区在线观看| 欧美另类中文字幕| 欧美激情网址| 国产乱码午夜在线视频| 五月激情久久| 在线日韩欧美| 中文字幕色婷婷在线视频| 老牛影视精品| av中文字幕在线观看第一页| 国产一区二区三区探花| 亚洲最新无码中文字幕久久 | 国产66精品| 秋霞影视一区二区三区| 免费不卡中文字幕在线| 黄色亚洲免费| 婷婷成人av| 国产精品v一区二区三区| 国产美女高潮在线观看| 久久激情婷婷| 伊人久久一区| 麻豆精品新av中文字幕| 三级精品视频| 日韩亚洲精品在线观看| 久久免费福利| 久久一区二区三区喷水| 亚洲一二av| 国产福利一区二区精品秒拍| 欧美一级鲁丝片| 免费视频久久| 欧美黑人巨大videos精品| 特黄特色欧美大片| 最新亚洲国产| 久久精品福利| 国产在线成人| 日韩国产精品久久久久久亚洲| 国产一区二区三区网| 天堂成人国产精品一区| 久久久国产精品入口麻豆| 欧美国产91| 欧美日韩中出| 欧美日韩在线观看视频小说| 日日夜夜免费精品| 中文字幕在线高清| 亚洲精品视频一二三区| 久久精品伊人| 日韩午夜黄色| 欧美激情久久久久久久久久久| 樱桃视频成人在线观看| 石原莉奈在线亚洲三区| 国产精品高潮呻吟久久久久| 一区二区小说| 国产乱码精品| 亚洲精品网址| 捆绑调教美女网站视频一区| 国产精品日韩欧美一区| 国产一区丝袜| 日韩精品免费视频一区二区三区| 亚洲欧洲高清| 国产日韩亚洲欧美精品| 伊人精品视频| 色爱综合网欧美| 日韩国产欧美在线视频| 久久在线视频免费观看| 国产精品资源| 亚洲影院天堂中文av色| 久久视频精品| 国产aⅴ精品一区二区四区| 亚洲精品大片| 欧美日韩四区| 桃色一区二区| 国产精品久久久亚洲一区| 午夜电影亚洲| 天堂√中文最新版在线| 日本午夜精品视频在线观看| 蜜桃一区二区三区| 福利一区二区免费视频| 日本午夜精品久久久久| 丝袜a∨在线一区二区三区不卡| 久久av免费看| 尹人成人综合网| 国产情侣一区在线| 亚洲精品在线观看91| 日韩1区在线| 日本午夜精品久久久| 亚洲综合精品| 激情综合网站| 久久久久国产| 国产不卡人人| 欧美黑人巨大videos精品| 日韩久久一区| 在线精品视频一区| 午夜一级久久| 欧美日韩国产传媒| 精品久久久久中文字幕小说| 久久激情五月激情| 亚洲午夜久久| 免费成人在线视频观看| 一区二区亚洲精品| 91久久久久| 在线亚洲免费| 在线一区免费观看| 亚洲综合三区| 日韩视频精品在线观看| 亚洲香蕉网站| 久久精品av| 亚洲一级高清| 国模 一区 二区 三区| 久久精品91| 久久久久.com| 亚洲二区精品| 午夜欧美理论片| 日韩在线观看一区二区| 亚洲精品在线观看91| 激情欧美亚洲| 午夜欧美精品| 日本大胆欧美人术艺术动态| 美日韩精品视频| 久热综合在线亚洲精品| 老牛影视一区二区三区| 视频一区国产视频| 亚洲tv在线| 久久狠狠亚洲综合| 久久影视三级福利片| 捆绑调教美女网站视频一区| 精品精品久久| 日韩av免费大片| 久久久久久美女精品| 欧美日韩国产综合网| 免费视频一区二区| 日韩一区精品| 国产精品网址| 日产午夜精品一线二线三线| 久久久久久美女精品| 欧美+亚洲+精品+三区| 一区在线观看| 日韩毛片一区| 精品三级av| 欧美福利一区| 免费看精品久久片| 日韩视频1区| 久久精品国产成人一区二区三区| 日韩成人a**站| 免费视频亚洲| 日韩在线观看一区二区三区| 国产精品免费精品自在线观看| 成人在线丰满少妇av| 免费久久精品| 青青草国产成人99久久| 国产成人精品一区二区三区在线| 激情欧美一区| 亚洲精品九九| 久久一区视频| 久久中文视频| 日本在线成人| sm久久捆绑调教精品一区| 在线一区视频| 美腿丝袜亚洲三区| 亚洲高清激情| 国产探花在线精品| 日本高清不卡一区二区三区视频| 日韩午夜电影| 国产精品久久久久久模特| 国产黄大片在线观看| 国产日韩综合| 麻豆精品蜜桃视频网站| 最新亚洲激情| 国产精品s色| 九九久久婷婷| 欧美激情网址| 免费不卡中文字幕在线| 欧美日韩亚洲一区| 亚洲成人一区在线观看| 日韩欧美中文在线观看| www在线观看黄色| 亚洲日本免费电影| 精品视频高潮| 尤物在线精品| 亚洲精品国模| 精品欠久久久中文字幕加勒比| 性欧美xxxx免费岛国不卡电影| 综合亚洲自拍| 精品一区二区三区的国产在线观看| 亚洲国产专区校园欧美| 国产日韩欧美一区二区三区在线观看| 日韩av有码| 91精品丝袜国产高跟在线| 亚洲日本网址| 国产精品一区毛片| 久久99伊人| 精品视频高潮| 日韩高清不卡一区二区| 国产一区亚洲|