Ejemplo n.º 1
0
        internal static Action <T, JsonSerializerHandler> Create <T>(SerializerBuildTypeEnum buildTypeEnum)
        {
            Type t = typeof(T);
            ParameterExpression instanceArg = Expression.Variable(t, "instance");
            Expression          mainBody    = (Expression)BuildMethodDics[buildTypeEnum].Invoke(null, new object[] { t, instanceArg });

#if DEBUG
            DEBUGSURVEY.Add(t, mainBody);
#endif


#if VIEW && NET45
            var methodBuilder = typeBuilder.DefineMethod($"Serializer_{typeof(T).Name}", System.Reflection.MethodAttributes.Static | System.Reflection.MethodAttributes.Public, typeof(void), new Type[] { typeof(T), typeof(JsonSerializerHandler) });

            Expression.Lambda <Action <T, JsonSerializerHandler> >(
                mainBody, instanceArg, ExpressionMembers.HandlerArg).CompileToMethod(methodBuilder);
#endif

            return(Expression.Lambda <Action <T, JsonSerializerHandler> >(
                       mainBody, instanceArg, ExpressionMembers.HandlerArg).Compile());
        }
 internal ExpressionBuildTypeAttribute(SerializerBuildTypeEnum buildType)
 {
     _serializerBuildTypeEnum = buildType;
 }