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

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

.NET擴展方法使用實例詳解

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

擴展方法有幾個必要前提:

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

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

針對DateTime類型寫一個擴展方法。

    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("請輸入正確的出生日期~~");    }    else    {return currentYear - birthYear - 1;    }}    }

客戶端調(diào)用。

    class Program    {static void Main(string[] args){    try    {Console.WriteLine("請輸入您的出生年份");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);    }}    }

擴展接口

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

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

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

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

接口有2個實現(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)"}    };}    }

針對接口擴展方法。

    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();}    }

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

擴展一個類的時候,有時候會用到該類的私有字段,我們可以通過反射拿到類的私有字段。

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

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

我們希望擴展出一個顯示英文信息的問候。

    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();}    }

擴展一個類的私有嵌套類 通過反射

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

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

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

現(xiàn)在要擴展這個私有嵌套類,為其添加一個轉(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類型,然后運用私有嵌套類的擴展方法。

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

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

標(biāo)簽: ASP.NET
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人免费| 麻豆高清免费国产一区| 精品资源在线| 97成人在线| 日韩国产精品久久久久久亚洲| 日韩精品一区第一页| 亚洲欧美日韩在线观看a三区| 99在线精品免费视频九九视| 午夜久久久久| 99riav国产精品| 亚洲欧美视频一区二区三区| 亚洲免费婷婷| 欧美专区18| 只有精品亚洲| 日本a口亚洲| 国产免费久久| 精品入口麻豆88视频| 狂野欧美性猛交xxxx| 精品日韩一区| 日韩久久精品| 久久国产亚洲| 日韩一区二区免费看| 国产精品呻吟| 日本综合精品一区| 国产精品一页| www在线观看黄色| 久久精品国产68国产精品亚洲| 欧美大黑bbbbbbbbb在线| 国产精品美女久久久| 日韩精品久久久久久| 国产精品丝袜在线播放| 中文在线а√在线8| 久久婷婷久久| 午夜久久影院| 日韩高清在线不卡| 久久久久97| 国产91一区| 亚洲乱码视频| 精品国产一区二区三区噜噜噜| 日韩精品诱惑一区?区三区| 99在线|亚洲一区二区| 97久久超碰| 在线精品亚洲欧美日韩国产| 欧美在线网站| 欧美日韩中文| 日韩专区精品| 亚洲小说春色综合另类电影| 国产欧美日韩视频在线| 神马久久午夜| 免费一区二区视频| 欧美1区二区| 欧美成人高清| 欧美久久一区二区三区| 日韩国产欧美一区二区| 蜜臀av国产精品久久久久| 麻豆精品久久久| 黄色亚洲精品| 美女视频免费精品| 欧美成人高清| 欧美精品99| 女人天堂亚洲aⅴ在线观看| 国产欧美丝祙| 欧美~级网站不卡| 欧美在线黄色| 日韩免费视频| 日韩高清一区| 999国产精品| 国产美女亚洲精品7777| 国产99亚洲| 国产精品v亚洲精品v日韩精品| 播放一区二区| 欧美亚洲国产日韩| 亚洲国内欧美| 免费视频一区二区三区在线观看| 中文精品视频| 日韩av二区| 亚洲精品乱码久久久久久蜜桃麻豆| 久久99影视| 国产亚洲永久域名| 国产色播av在线| 婷婷精品久久久久久久久久不卡| 日韩精品永久网址| 欧美日韩亚洲一区在线观看| 欧美日韩国产免费观看视频| 麻豆91精品视频| 亚洲三区欧美一区国产二区| 捆绑调教日本一区二区三区| 国产毛片精品| 综合国产在线| 婷婷综合网站| 欧美91在线| 亚州欧美在线| 99国产精品| 高清av不卡| 欧美激情aⅴ一区二区三区| 人人爽香蕉精品| 视频福利一区| 精品久久网站| 91成人小视频| 亚洲综合三区| 欧洲激情综合| 群体交乱之放荡娇妻一区二区| 国产精品15p| 日本不卡不码高清免费观看 | 羞羞答答国产精品www一本| а√天堂中文在线资源8| 国产精品宾馆| 欧美自拍一区| 亚洲精品看片| 视频一区在线播放| 黄色亚洲大片免费在线观看| 欧美肉体xxxx裸体137大胆| 成人一区不卡| 国产中文欧美日韩在线| 日韩高清在线不卡| 综合一区av| 视频在线观看91| 狠狠干综合网| 99久久亚洲精品蜜臀| 欧产日产国产精品视频| 中文字幕一区二区三区四区久久 | 热三久草你在线| 丁香婷婷久久| 国产精品网址| 99pao成人国产永久免费视频| 国产精品主播| 国产精品地址| 老牛国内精品亚洲成av人片| 麻豆一区二区在线| 国产一区二区三区不卡av| 麻豆精品在线播放| 美女尤物国产一区| 成人片免费看| 欧美在线影院| 日本欧美久久久久免费播放网| 91久久精品无嫩草影院| 精品一区91| 九一精品国产| 日韩有吗在线观看| 美女视频一区在线观看| а√天堂8资源在线| 美女精品在线| 国产欧洲在线| 98精品久久久久久久| 欧美www视频在线观看| jizzjizz中国精品麻豆| av亚洲一区二区三区| 欧美sss在线视频| 蜜臀av免费一区二区三区| 国产一区二区三区日韩精品| 国产精品久久观看| 啪啪国产精品| 亚洲欧美日韩在线观看a三区| 亚洲人妖在线| 国产精品红桃| 黄毛片在线观看| 久久久精品网| 一本色道久久精品| 日本精品一区二区三区在线观看视频| 国产精品天天看天天狠| 超级白嫩亚洲国产第一| 亚洲午夜视频| 色综合视频一区二区三区日韩| 欧美日韩一区二区三区四区在线观看 | 国产精品日韩精品中文字幕| 久久精品国产99国产| 日本在线精品| 性欧美精品高清| 日韩精品1区2区3区| 美女久久久精品| 99久久婷婷这里只有精品| 日韩影院精彩在线| 麻豆国产精品| 欧美精品一卡| 国产精品magnet| 国产在线成人| 青青国产精品| 91tv亚洲精品香蕉国产一区| 丝袜美腿一区二区三区| 国产精品一区二区三区www| 日韩欧美看国产| 少妇精品久久久一区二区| av最新在线| 蜜臀久久99精品久久久久久9 | 好看的亚洲午夜视频在线| 日韩精品久久理论片| 日韩国产一区| 四虎精品一区二区免费| 视频在线不卡免费观看| 爽爽淫人综合网网站| 精品国内亚洲2022精品成人| 99成人在线| 久久久久久婷| 日韩1区2区3区| 色黄视频在线观看| 日韩精品视频一区二区三区| 九色porny丨国产首页在线| 日韩成人在线看| 欧美手机在线| 国产精品日本一区二区不卡视频|