Sic05/FrameworkLocal/UIClient/Caliburn.Micro/Core/ExpressionExtensions.cs

30 lines
1021 B
C#

namespace Caliburn.Micro.Core {
using System.Linq.Expressions;
using System.Reflection;
/// <summary>
/// Extension for <see cref="Expression"/>.
/// </summary>
public static class ExpressionExtensions {
/// <summary>
/// Converts an expression into a <see cref="MemberInfo"/>.
/// </summary>
/// <param name="expression">The expression to convert.</param>
/// <returns>The member info.</returns>
public static MemberInfo GetMemberInfo(this Expression expression) {
var lambda = (LambdaExpression) expression;
MemberExpression memberExpression;
if (lambda.Body is UnaryExpression) {
var unaryExpression = (UnaryExpression) lambda.Body;
memberExpression = (MemberExpression) unaryExpression.Operand;
}
else {
memberExpression = (MemberExpression) lambda.Body;
}
return memberExpression.Member;
}
}
}