private Expression VisitMemberAccess(SerializableMemberExpression m)
        {
            var target = Visit(m.Expression);
            var field  = m.Member as FieldInfo;

            if (field != null)
            {
                return(Expression.Field(target, field));
            }
            var property = m.Member as PropertyInfo;

            if (property != null)
            {
                return(Expression.Property(target, property));
            }
            var method = m.Member as MethodInfo;

            if (method != null)
            {
                return(Expression.Property(target, method));
            }
            throw new ArgumentException();
        }
Пример #2
0
 /// <summary>
 /// Visits a <see cref="SerializableMemberExpression"/>.
 /// </summary>
 /// <param name="expression"><see cref="SerializableMemberExpression"/> to visit.</param>
 /// <returns>Returns the converted <see cref="Expression"/>.</returns>
 protected abstract Expression VisitSerializableMemberExpression(SerializableMemberExpression expression);
Пример #3
0
 /// <summary>
 /// Visits a <see cref="SerializableMemberExpression"/>.
 /// </summary>
 /// <param name="expression"><see cref="SerializableMemberExpression"/> to visit.</param>
 /// <returns>Returns the converted <see cref="Expression"/>.</returns>
 protected override Expression VisitSerializableMemberExpression(SerializableMemberExpression expression)
 {
     return(Expression.MakeMemberAccess(Visit(expression.Expression), expression.Member.GetClrVersion()));
 }