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; }