最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 表達式目錄樹的應用詳解

 更新時間:2017年12月18日 10:13:23   作者:Torey_li  
下面小編就為大家分享一篇C# 表達式目錄樹的應用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用表達式目錄樹實現兩個不同類型的屬性賦值:

public class People
{
public int Age { get; set; }
public string Name { get; set; }
public int Id;
}
public class PeopleCopy
{
public int Age { get; set; }
public string Name { get; set; }
public int Id;
}
public class Class1
{
private static Dictionary<string, object> _Dic = new Dictionary<string, object>();
private static TOut TransExp<TIn, TOut>(TIn tIn) {
string key = $"funckey_{typeof(TIn).FullName}_{typeof(TOut).FullName}";
if (!_Dic.Keys.Contains(key)) { 
ParameterExpression parameterExpression = Expression.Parameter(typeof(TIn), "p");
List<MemberBinding> memberBindingList = new List<MemberBinding>();
foreach (var item in typeof(TOut).GetProperties())
{
PropertyInfo propertyInfo = typeof(TIn).GetProperty(item.Name);
if (propertyInfo == null) { continue; }
MemberExpression property = Expression.Property(parameterExpression, propertyInfo);
memberBindingList.Add(Expression.Bind(item, property));
}
foreach (var item in typeof(TOut).GetFields())
{
FieldInfo fieldInfo = typeof(TIn).GetField(item.Name);
if (fieldInfo == null) { continue; }
MemberExpression property = Expression.Field(parameterExpression, fieldInfo);
memberBindingList.Add(Expression.Bind(item, property));
}
Expression<Func<TIn, TOut>> expression = Expression.Lambda<Func<TIn, TOut>>(Expression.MemberInit(Expression.New(typeof(TOut)), memberBindingList), new ParameterExpression[]
{
parameterExpression
});
Func<TIn, TOut> func = expression.Compile();
_Dic.Add(key,func);
}
return ((Func < TIn, TOut > )_Dic[key])(tIn);
}
}
static void Main(string[] args)
{
List<ClassLibrary1.PeopleCopy> PeoleCopyList = new List<ClassLibrary1.PeopleCopy>();
for (int i = 0; i < 5; i++)
{
ClassLibrary1.People people = new ClassLibrary1.People() { Id = 5+1, Age = 25, Name = "aaa"+i };
PeoleCopyList.Add(Class1.ToutGet<ClassLibrary1.People, ClassLibrary1.PeopleCopy>(people));
}
}

以上這篇C# 表達式目錄樹的應用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C#驗證用戶輸入信息是否包含危險字符串的方法

    C#驗證用戶輸入信息是否包含危險字符串的方法

    這篇文章主要介紹了C#驗證用戶輸入信息是否包含危險字符串的方法,可針對and、or、exec、insert、select等SQL操作技巧進行過濾操作,非常具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C#泛型詳解及關鍵字作用

    C#泛型詳解及關鍵字作用

    這篇文章主要來講講c#中的泛型,因為泛型在c#中有很重要的位置,對于寫出高可讀性,高性能的代碼有著關鍵的作用,大家都知道泛型公共語言運行庫是非常重要功能,那么為什么使用泛型呢,帶著這個問題一起通過本文學習下吧
    2021-08-08
  • C#中使用資源的方法分析

    C#中使用資源的方法分析

    這篇文章主要介紹了C#中使用資源的方法,較為詳細的對比分析了C#中使用資源的幾種常用方法,非常具有實用價值,需要的朋友可以參考下
    2014-12-12
  • C#命令模式用法實例

    C#命令模式用法實例

    這篇文章主要介紹了C#命令模式用法,以實例形式較為詳細的分析了C#命令模式的功能、定義及使用技巧,需要的朋友可以參考下
    2015-07-07
  • C# WinForm中禁止改變窗口大小的方法

    C# WinForm中禁止改變窗口大小的方法

    這篇文章主要介紹了C# WinForm中禁止改變窗口大小的方法,需要把FormBorderStyle和MaximizeBox的值固定即可,需要的朋友可以參考下
    2014-08-08
  • c# 判斷是否為空然后賦值的4種實現方法

    c# 判斷是否為空然后賦值的4種實現方法

    下面小編就為大家分享一篇c# 判斷是否為空然后賦值的4種實現方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • c#固定長度的隨機字符串例子

    c#固定長度的隨機字符串例子

    c#固定長度的隨機字符串例子,需要的朋友可以參考一下
    2013-04-04
  • C#中Dispose和Finalize方法使用介紹

    C#中Dispose和Finalize方法使用介紹

    這篇文章介紹了C#中Dispose和Finalize方法的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#實現任務欄通知窗口

    C#實現任務欄通知窗口

    作為程序員在享受的同時我們也不禁要問:這到底是怎么實現的呢?本文就利用Visual Studio .Net C# 2005以及.Net框架繪圖技術來實現這種任務欄通知窗口。
    2015-10-10
  • 詳解C#中Helper類的使用

    詳解C#中Helper類的使用

    項目中用戶頻繁訪問數據庫會導致程序的卡頓,甚至堵塞。使用緩存可以有效的降低用戶訪問數據庫的頻次,有效的減少并發(fā)的壓力。而helper類對緩存有了封裝,本文展示了封裝的示例代碼,需要的可以參考一下
    2022-04-04

最新評論

广河县| 揭东县| 溧阳市| 探索| 沂水县| 星子县| 翼城县| 鄂尔多斯市| 淮北市| 镇巴县| 阆中市| 海口市| 呼和浩特市| 云林县| 小金县| 叶城县| 桓台县| 红原县| 大埔区| 万山特区| 无为县| 石河子市| 新化县| 岐山县| 呈贡县| 四会市| 盱眙县| 霞浦县| SHOW| 商都县| 白银市| 临江市| 青岛市| 贡嘎县| 龙岩市| 射阳县| 大厂| 丰顺县| 北川| 营口市| 安福县|