Изменения документа Expression tree | Деревья выражений

Редактировал(а) Alexandr Fokin 2024/02/10 14:04

<
От версии < 7.3 >
отредактировано Alexandr Fokin
на 2021/04/05 10:05
К версии < 7.2 >
отредактировано Alexandr Fokin
на 2021/04/05 09:43
>
Изменить комментарий: Добавлен комментарий

Комментарий

Подробности

XWiki.XWikiComments[0]
Дата
... ... @@ -1,1 +1,1 @@
1 -2021-04-05 09:43:52.467
1 +2021-04-05 09:43:52.468
XWiki.XWikiComments[1]
Автор
... ... @@ -1,1 +1,0 @@
1 -XWiki.cccc1808
Комментарий
... ... @@ -1,37 +1,0 @@
1 -Простое копирование свойств одного класса в другой
2 -{{code language="c#"}}
3 -//Source
4 -ClassA a = new ClassA()
5 -{
6 - A = 10,
7 - B = 20
8 -};
9 -//Destination
10 -ClassB b = new ClassB();
11 -
12 -//Source class instance parameter
13 -var parametrB = Expression.Parameter(b.GetType());
14 -
15 -//Destination class instance parameter
16 -var parametrA = Expression.Parameter(a.GetType());
17 -
18 -var copyPropertyAEx = Expression.Assign(
19 - Expression.Property(parametrB, b.GetType().GetProperty("A")),
20 - Expression.Property(parametrA, a.GetType().GetProperty("A"))
21 - );
22 -var copyPropertyBEx = Expression.Assign(
23 - Expression.Property(parametrB, b.GetType().GetProperty("B")),
24 - Expression.Property(parametrA, a.GetType().GetProperty("B"))
25 - );
26 -
27 -var copyPropertyEx = Expression.Block(
28 - copyPropertyAEx,
29 - copyPropertyBEx
30 - );
31 -
32 -var copyPropertyDelegate = Expression
33 - .Lambda<Func<ClassB, ClassA, int>>(copyPropertyEx, parametrB, parametrA)
34 - .Compile();
35 -
36 -var result = copyPropertyDelegate.Invoke(b, a);
37 -{{/code}}
Дата
... ... @@ -1,1 +1,0 @@
1 -2021-04-05 10:05:31.842