Пример #1
0
        public static string ToJsonFunc(object value)
        {
            string     source = SerializeCodeGenerator.GenerateJsonBuffer(value.GetType());
            Assembly   ass    = SerializeCodeGenerator.Create(source);
            Type       obj    = ass.GetType("JsonExtensions");
            MethodInfo method = obj.GetMethod("ToJson");
            //MethodInfo method = typeof(JsonExtensions).GetMethod("ToJson");
            StringBuilder sb = new StringBuilder();
            //object result = method.Invoke(obj, new object[] { value });
            //Action<StringBuilder, NormalClass> setter = (Action<StringBuilder, NormalClass>)Delegate.CreateDelegate(typeof(Action<StringBuilder, NormalClass>), null, method);
            //setter(sb, (NormalClass)value);
            //Action<StringBuilder, object> setter = (Action<StringBuilder, object>)Delegate.CreateDelegate(typeof(Action<StringBuilder, object>), null, method);
            //setter(sb, value);
            Action <StringBuilder, object> setter = (Action <StringBuilder, object>)Delegate.CreateDelegate(typeof(Action <StringBuilder, object>), null, method);

            setter(sb, value);

            Stopwatch w = Stopwatch.StartNew();

            for (int i = 0; i < 1000000; i++)
            {
                sb.Length = 0;
                setter(sb, value);
            }
            w.Stop();
            Console.WriteLine("cost:" + w.ElapsedMilliseconds);
            //Action<StringBuilder, object> setter = (Action<StringBuilder, object>)Delegate.CreateDelegate(typeof(Action<StringBuilder, object>), null, method);
            //setter(sb, value);


            //Console.WriteLine(result);
            return(sb.ToString());
        }
Пример #2
0
        public static string ToJson(object value)
        {
            //string source = SerializeCodeGenerator.Generator(value.GetType());
            string   source = SerializeCodeGenerator.GenerateJson(value.GetType());
            Assembly ass    = SerializeCodeGenerator.Create(source);
            //object obj = ass.CreateInstance("JsonExtensions");
            //MethodInfo method = obj.GetType().GetMethod("ToJson");
            Type       obj    = ass.GetType("JsonExtensions");
            MethodInfo method = obj.GetMethod("ToJson");

            object    result = method.Invoke(obj, new object[] { value });
            Stopwatch w      = Stopwatch.StartNew();

            for (int i = 0; i < 1000000; i++)
            {
                result = method.Invoke(obj, new object[] { value });
            }
            w.Stop();
            Console.WriteLine("cost:" + w.ElapsedMilliseconds);
            //Func<object, string> setter = (Func<object, string>)Delegate.CreateDelegate(typeof(Func<object, string>), value, method);
            //string result = setter(value);

            //Console.WriteLine(result);
            return(result.ToString());
        }
Пример #3
0
        public static Action <CsvString, object> CreateMethod(Type type)
        {
            string     source = SerializeCodeGenerator.GenerateCsvUsingCsvString(type);
            Assembly   ass    = SerializeCodeGenerator.Create(source);
            Type       obj    = ass.GetType(type.FullName.Replace('.', '_') + Extensions);
            MethodInfo method = obj.GetMethod(Method);

            return((Action <CsvString, object>)Delegate.CreateDelegate(typeof(Action <CsvString, object>), null, method));
        }
Пример #4
0
        public static string ToJsonBuffer(object value)
        {
            string        source = SerializeCodeGenerator.GenerateJsonBuffer(value.GetType());
            Assembly      ass    = SerializeCodeGenerator.Create(source);
            Type          obj    = ass.GetType("JsonExtensions");
            MethodInfo    method = obj.GetMethod("ToJson");
            StringBuilder sb     = new StringBuilder();
            string        s      = "";

            method.Invoke(obj, new object[] { sb, value });
            Stopwatch w = Stopwatch.StartNew();

            for (int i = 0; i < 1000000; i++)
            {
                //method.Invoke(obj, new object[] { sb, value });
                s = int.MaxValue.ToString();
            }
            w.Stop();
            Console.WriteLine("cost:" + w.ElapsedMilliseconds);
            return(s);

            return(sb.ToString());


            //string source = SerializeCodeGenerator.GenerateJsonBuffer(value.GetType());
            //Assembly ass = SerializeCodeGenerator.Create(source);
            //Type obj = ass.GetType("JsonExtensions");
            //MethodInfo method = obj.GetMethod("ToJson");
            //StringBuilder sb = new StringBuilder();
            //SetValueDelegate ss = DynamicMethodFactory.CreateCallJson(method, value.GetType());
            //ss(sb, value);
            //Stopwatch w = Stopwatch.StartNew();
            //for (int i = 0; i < 1000000; i++)
            //    ss(sb, value);
            //w.Stop();
            //Console.WriteLine("cost:" + w.ElapsedMilliseconds);

            //return sb.ToString();
        }