39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
namespace LaaProductionWeb.Services.Models
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq.Expressions;
|
|
using System.Reflection;
|
|
|
|
public class HeliumReportModel
|
|
{
|
|
public HeliumReportFilter Filter { get; set; }
|
|
= new HeliumReportFilter();
|
|
|
|
public IEnumerable<HeliumReportItem> Items { get; set; }
|
|
= Array.Empty<HeliumReportItem>();
|
|
|
|
public static implicit operator HeliumReportModel(HeliumReportFilter filter)
|
|
=> new HeliumReportModel { Filter = filter };
|
|
|
|
public string Display(Expression<Func<HeliumReportItem, object>> expression)
|
|
{
|
|
var memberInfo = default(MemberInfo);
|
|
|
|
if (expression.Body is MemberExpression memberExpression)
|
|
{
|
|
memberInfo = memberExpression.Member;
|
|
}
|
|
else if (expression.Body is UnaryExpression unaryExpression && unaryExpression.Operand is MemberExpression operandExpression)
|
|
{
|
|
memberInfo = operandExpression.Member;
|
|
}
|
|
|
|
return memberInfo
|
|
?.GetCustomAttribute<DisplayAttribute>()
|
|
?.Name;
|
|
}
|
|
}
|
|
}
|