中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linq參數類型有哪些

發布時間:2021-08-10 17:57:57 來源:億速云 閱讀:115 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Linq參數類型有哪些,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

反射問題:遠離類型安全錯誤

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

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

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

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

通過Linq進行強類型反射

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

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

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

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

關于Linq參數類型有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄大仙区| 罗城| 东莞市| 闻喜县| 玛沁县| 东乡县| 神池县| 枣庄市| 石泉县| 邯郸县| 胶南市| 万山特区| 密云县| 佛山市| 类乌齐县| 宜君县| 龙陵县| 外汇| 贵南县| 博客| 罗平县| 波密县| 郓城县| 临沭县| 北京市| 洞口县| 抚顺市| 从江县| 昆山市| 芒康县| 宁海县| 瑞丽市| 古交市| 澄迈县| 灵宝市| 台东县| 金山区| 泰安市| 皮山县| 宜兴市| 莱芜市|