Return to Snippet

Revision: 16136
at July 27, 2009 14:47 by JanVanRyswyck


Initial Code
public static class ReflectionHelper
    {
        private sealed class AssemblyMarker {}
    
        public static PropertyInfo GetProperty<T>(Expression<Func<T, Object>> expression)
        {
            Check.Argument(expression, "expression").IsNotNull();

            MemberExpression memberExpression;
            if(ExpressionType.Convert == expression.Body.NodeType)
            {
                var body = (UnaryExpression)expression.Body;
                memberExpression = body.Operand as MemberExpression;
            }
            else
            {
                memberExpression = expression.Body as MemberExpression;
            }

            if(null == memberExpression)
            {
                var message = ResourceLoader<AssemblyMarker>.GetString("InvalidMemberExpression");
                throw new InvalidOperationException(message);
            }

            return memberExpression.Member as PropertyInfo;   
        }
    }

Initial URL


Initial Description


Initial Title
ReflectionHelper

Initial Tags


Initial Language
C#