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