scripts
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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<IMessage, object> CreateFuncIMessageObject(MethodInfo method)
|
||||
{
|
||||
ParameterExpression parameterExpression;
|
||||
return Expression.Lambda<Func<IMessage, object>>(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<IMessage, T> CreateFuncIMessageT<T>(MethodInfo method)
|
||||
{
|
||||
ParameterExpression parameterExpression;
|
||||
return Expression.Lambda<Func<IMessage, T>>(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<IMessage, object> 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<Action<IMessage, object>>(Expression.Call(expression, method, new Expression[] { expression2 }), new ParameterExpression[] { parameterExpression, parameterExpression2 }).Compile();
|
||||
}
|
||||
|
||||
// Token: 0x060005F3 RID: 1523 RVA: 0x00014E5C File Offset: 0x0001305C
|
||||
internal static Action<IMessage> CreateActionIMessage(MethodInfo method)
|
||||
{
|
||||
ParameterExpression parameterExpression;
|
||||
return Expression.Lambda<Action<IMessage>>(Expression.Call(Expression.Convert(parameterExpression, method.DeclaringType), method), new ParameterExpression[] { parameterExpression }).Compile();
|
||||
}
|
||||
|
||||
// Token: 0x0400025F RID: 607
|
||||
internal static readonly Type[] EmptyTypes = new Type[0];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user