Simplify CurveData data structures

This commit is contained in:
2018-08-24 21:28:00 -04:00
parent cc49f05d7e
commit ad41465c05
10 changed files with 55 additions and 96 deletions
+10 -32
View File
@@ -10,37 +10,15 @@ namespace LeafWeb.Core.Utility
{
public static class ReflectionExtensions
{
public static string GetPropertyDisplayName<T>(Expression<Func<T, object>> propertyExpression)
{
var memberInfo = GetPropertyInformation(propertyExpression.Body);
if (memberInfo == null)
{
throw new ArgumentException("No property reference expression was found.", nameof(propertyExpression));
}
var attr = memberInfo.Attributes<DisplayNameAttribute>().SingleOrDefault();
return attr == null ? memberInfo.Name : attr.DisplayName;
}
public static MemberInfo GetPropertyInformation(Expression propertyExpression)
{
Debug.Assert(propertyExpression != null, "propertyExpression != null");
var memberExpr = propertyExpression as MemberExpression;
if (memberExpr == null)
{
var unaryExpr = propertyExpression as UnaryExpression;
if (unaryExpr != null && unaryExpr.NodeType == ExpressionType.Convert)
{
memberExpr = unaryExpr.Operand as MemberExpression;
}
}
if (memberExpr != null && memberExpr.Member.MemberType == MemberTypes.Property)
{
return memberExpr.Member;
}
return null;
}
public static string GetDescription(this Enum value)
{
return
value
.GetType()
.GetMember(value.ToString())
.FirstOrDefault()
?.GetCustomAttribute<DescriptionAttribute>()
?.Description;
}
}
}