using System; using System.Linq.Expressions; using System.Reflection; namespace Google.Protobuf.Reflection { // Token: 0x02000069 RID: 105 internal static class ReflectionUtil { // Token: 0x060005F0 RID: 1520 RVA: 0x00014D2C File Offset: 0x00012F2C internal static Func CreateFuncIMessageObject(MethodInfo method) { ParameterExpression parameterExpression; return Expression.Lambda>(Expression.Convert(Expression.Call(Expression.Convert(parameterExpression, method.DeclaringType), method), typeof(object)), new ParameterExpression[] { parameterExpression }).Compile(); } // Token: 0x060005F1 RID: 1521 RVA: 0x00014D84 File Offset: 0x00012F84 internal static Func CreateFuncIMessageT(MethodInfo method) { ParameterExpression parameterExpression; return Expression.Lambda>(Expression.Convert(Expression.Call(Expression.Convert(parameterExpression, method.DeclaringType), method), typeof(T)), new ParameterExpression[] { parameterExpression }).Compile(); } // Token: 0x060005F2 RID: 1522 RVA: 0x00014DDC File Offset: 0x00012FDC internal static Action CreateActionIMessageObject(MethodInfo method) { ParameterExpression parameterExpression = Expression.Parameter(typeof(IMessage), "target"); ParameterExpression parameterExpression2 = Expression.Parameter(typeof(object), "arg"); Expression expression = Expression.Convert(parameterExpression, method.DeclaringType); Expression expression2 = Expression.Convert(parameterExpression2, method.GetParameters()[0].ParameterType); return Expression.Lambda>(Expression.Call(expression, method, new Expression[] { expression2 }), new ParameterExpression[] { parameterExpression, parameterExpression2 }).Compile(); } // Token: 0x060005F3 RID: 1523 RVA: 0x00014E5C File Offset: 0x0001305C internal static Action CreateActionIMessage(MethodInfo method) { ParameterExpression parameterExpression; return Expression.Lambda>(Expression.Call(Expression.Convert(parameterExpression, method.DeclaringType), method), new ParameterExpression[] { parameterExpression }).Compile(); } // Token: 0x0400025F RID: 607 internal static readonly Type[] EmptyTypes = new Type[0]; } }