eisk.webapi
35 строк · 1013.0 Байт
1using Eisk.Core.Exceptions;
2using System;
3using System.Linq.Expressions;
4using System.Reflection;
5
6
7namespace Eisk.Core.Utils;
8
9public static class ExpressionUtil<TDomain>
10{
11public static object GetPropertyValue<TField>(Expression<Func<TDomain, TField>> expression, TDomain data)
12{
13if (data == null)
14throw new NullInputEntityException<TDomain>();
15
16var prop = GetPropertyInfo(expression);
17var value = prop.GetValue(data);
18return value;
19}
20
21public static void SetPropertyValue<TField>(Expression<Func<TDomain, TField>> expression, TDomain data, object value)
22{
23if (data == null)
24throw new NullInputEntityException<TDomain>();
25
26var prop = GetPropertyInfo(expression);
27prop.SetValue(data, value);
28}
29
30public static PropertyInfo GetPropertyInfo<TField>(Expression<Func<TDomain, TField>> expression)
31{
32var expr = (MemberExpression)expression.Body;
33return (PropertyInfo)expr.Member;
34}
35}
36