日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linq參數(shù)類型分析

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq參數(shù)類型,包括介紹通過(guò)Linq進(jìn)行強(qiáng)類型反射等方面。

臨猗ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

大家都知道Linq引入了標(biāo)準(zhǔn)查詢操作符,從而使查詢成為C#語(yǔ)言中最重要的概念。但不知您是否意識(shí)到,Linq還可用于查詢外的其他用途。下面我將***探討Linq用于查詢外的其他領(lǐng)域。

反射問(wèn)題:遠(yuǎn)離類型安全錯(cuò)誤

至少就我自己而言,使用C#這種類型安全語(yǔ)言時(shí),每當(dāng)按下Ctrl+Shift+B(或Shift+F6)鍵進(jìn)行編譯時(shí),會(huì)有一種輕松和放心的感覺(jué)。我知道,由于使用錯(cuò)誤的類型而產(chǎn)生的怪異且難于調(diào)試的運(yùn)行時(shí)錯(cuò)誤,以及像“方法缺失”這種提示幾乎從未出現(xiàn)。但是使用反射時(shí),如果我不小心,就會(huì)出現(xiàn)臭名昭著的TargetInvocationException和一些NullReferenceException之類的異常。下面正是我所遇到的:

 
 
 
  1. MethodInfo method = typeof(Mock).GetMethod("PublicMethodParameters",
    newType[]{ typeof(string), typeof(int) }));

如果對(duì)Mock類應(yīng)用重構(gòu)以便重命名該方法,會(huì)發(fā)生什么情況呢?如果Linq參數(shù)類型發(fā)生更改,會(huì)發(fā)生什么情況呢?毫無(wú)疑問(wèn),會(huì)發(fā)生運(yùn)行時(shí)異常!如果采用一個(gè)使用大量反射的插入式靈活框架,這決不是一個(gè)小問(wèn)題。由于害怕出錯(cuò)而不敢應(yīng)用重構(gòu)(或者使其代價(jià)昂貴)必然會(huì)限制您改進(jìn)設(shè)計(jì)和完善代碼的能力。那么,試著替換魔力字符串(magic strings)和松散類型的Type數(shù)組將會(huì)如何呢?

 
 
 
  1. MethodInfo info = Reflector.Method, string, 
    int>((x, y, z) => x.PublicMethodParameters(y, z));

通過(guò)Linq進(jìn)行強(qiáng)類型反射

其工作原理是作為參數(shù)傳遞的λ表達(dá)式(就像前一版本.NET中的委托一樣)不一定要執(zhí)行。上面的代碼基本上構(gòu)造了一個(gè)可以調(diào)用類型上給定方法的λ表達(dá)式。聲明方法的目標(biāo)類型的類型就是Method<> static generic方法的***個(gè)類型參數(shù)。您可指定的可選Linq參數(shù)類型將是您要調(diào)用的方法的Linq參數(shù)類型(如果存在)。如果我想獲得無(wú)參數(shù)方法的MethodInfo,則表達(dá)式將是:

 
 
 
  1. MethodInfo info = Reflector.Method(x => x.PublicMethodNoParameters());

這比您以前見(jiàn)到的任何λ表達(dá)式都典型。在λ表達(dá)式中,如果您需要傳遞附加參數(shù),則必須將所有內(nèi)容放到括號(hào)中(上例中的x、y和z)。用于屬性和字段的類型映射功能是相同的:

 
 
 
  1. PropertyInfo property = Reflector.Property(x => x.PublicProperty);
  2. FieldInfo field = Reflector.Field(x => x.PublicField);

文章名稱:Linq參數(shù)類型分析
鏈接地址:http://www.5511xx.com/article/ccedsgj.html