eisk.webapi

Форк
0
/
ExpressionUtil.cs 
35 строк · 1013.0 Байт
1
using Eisk.Core.Exceptions;
2
using System;
3
using System.Linq.Expressions;
4
using System.Reflection;
5

6

7
namespace Eisk.Core.Utils;
8

9
public static class ExpressionUtil<TDomain>
10
{
11
    public static object GetPropertyValue<TField>(Expression<Func<TDomain, TField>> expression, TDomain data)
12
    {
13
        if (data == null)
14
            throw new NullInputEntityException<TDomain>();
15

16
        var prop = GetPropertyInfo(expression);
17
        var value = prop.GetValue(data);
18
        return value;
19
    }
20

21
    public static void SetPropertyValue<TField>(Expression<Func<TDomain, TField>> expression, TDomain data, object value)
22
    {
23
        if (data == null)
24
            throw new NullInputEntityException<TDomain>();
25

26
        var prop = GetPropertyInfo(expression);
27
        prop.SetValue(data, value);
28
    }
29

30
    public static PropertyInfo GetPropertyInfo<TField>(Expression<Func<TDomain, TField>> expression)
31
    {
32
        var expr = (MemberExpression)expression.Body;
33
        return (PropertyInfo)expr.Member;
34
    }
35
}
36

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.