一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C# - C# 表達(dá)式目錄樹的應(yīng)用詳解

C# 表達(dá)式目錄樹的應(yīng)用詳解

2022-02-17 15:33Torey_li C#

下面小編就為大家分享一篇C# 表達(dá)式目錄樹的應(yīng)用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用表達(dá)式目錄樹實現(xiàn)兩個不同類型的屬性賦值:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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# 表達(dá)式目錄樹的應(yīng)用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/Torey/archive/2017/12/16/8048131.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: www.9p234.com| 欧美激情综合 | 无码爽死成人777在线观看网站 | 国产香蕉久久 | 日韩欧美一区二区三区免费观看 | 久久中文电影 | 午夜秀场在线观看 | 艾秋麻豆果冻传媒老狼仙踪林 | 明星裸乳照无奶罩 | xxxxx性13一14| 国产在线伊人 | 久久99re2热在线播放7 | 暖暖 免费 高清 日本 在线 | 五月天婷婷亚洲 | 99久久精品无码一区二区毛片 | 视频一区二区在线 | 日本五十路六十30人8时间 | 三星w699 | 18young第一次 | 楚乔传第二部全60集免费观看 | 欧美成人aa | 国产精品久久久久久久久免费hd | 范冰冰上面好大下面好紧 | 欧美成人影院免费观 | 九九九国产在线 | 欧美一卡2卡三卡4卡5卡免费观看 | 99精品全国免费7观看视频 | 3d美女触手怪爆羞羞漫画 | 成人快手破解版 | 亚洲男人天堂影院 | 日韩精品欧美激情国产一区 | 国产成人手机在线 | 黑人好大好硬好深好爽想要h | 免费一级片在线观看 | 亚洲精品无码不卡在线观看 | 日本免费久久久久久久网站 | 色在线影院 | 国产福利不卡一区二区三区 | 四虎e234hcom| jk制服喷水 | 女毛片|