/// <summary> /// 将DB数据对象转成当前运行环境中的常用对象 /// </summary> /// <param name="v"></param> /// <returns></returns> private static object ConvertDBValue2Object(object v) { if (v is DBNull) { return(null); } else if (v is SqlDateTime) { return(((SqlDateTime)v).Value); } else if (v.GetType().GetInterfaces().Where(p => p.FullName == "MySql.Data.Types.IMySqlValue").Count() > 0) { var dobj = FrameExposedObject.From(v); if (v.GetType().Name == "MySqlDateTime") { //0000-00-00 00:00:00这种格式会无法识别成datetime if (dobj.IsValidDateTime) { return(dobj.Value); } else { return(null); } } else { return(dobj.Value); } } else { return(v); } }
protected override ParameterStd ConvertParameters(object[] obj) { var p = new HttpParameter(); if (obj != null && obj.Length > 0) { if (obj[0] != null) { var feo = FrameExposedObject.From(obj[0]); p.ToUrl = feo.Url; if (ComFunc.nvl(feo.ContentEncoding) != "") p.ContentEncoding = feo.ContentEncoding; if (ComFunc.nvl(feo.ContentType) != "") p.ContentType = feo.ContentType; if (feo.Certificate != null) p.Certificate = feo.Certificate; if (ComFunc.nvl(feo.RequestMethod) != "") p.RequestMethod = feo.RequestMethod; if (feo.PostData != null) { p.PostData.Load(feo.PostData); } if (feo.Header != null) { p.Header.Load(feo.Header); } } } return p; }
/// <summary> /// 当proxy被加载到ProxyManager的时候调用,主要是application层面进行初始化的时候调用 /// </summary> /// <param name="ma"></param> /// <param name="options"></param> protected void OnUsed(ProxyManager ma, dynamic options) { MyUsed(ma, options); var tmp = CreateModuleInstance(); FrameExposedObject.From(tmp).OnUsed(ma, options); }
public TTagEntity(Type t) { TTag = t; var eo = FrameExposedObject.New(t); TagName = eo.TagName; }
protected override ParameterStd ConvertParameters(object[] obj) { var rtn = new RazorParam(); if (obj != null && obj.Length > 0) { if (obj.Length == 1) { if (obj[0] is RazorParam) { rtn = (RazorParam)obj[0]; } else { var feo = FrameExposedObject.From(obj[0]); rtn.ViewPath = feo.ViewPath; rtn.CurrentHttpContext = feo.HttpContext; if (rtn.CurrentHttpContext == null) { rtn.CurrentHttpContext = feo.DefaultHttpContext.value; } rtn.Model = feo.Model; rtn.ViewList = feo.ViewList; } } else if (obj.Length == 4) { var fea = FrameExposedArray.From(obj); rtn.ViewPath = fea.String.value; rtn.CurrentHttpContext = fea.HttpContext.value; if (rtn.CurrentHttpContext == null) { rtn.CurrentHttpContext = fea.DefaultHttpContext.value; } rtn.Model = fea.Object.value; rtn.ViewList = fea.dictionary.value; } } return(rtn); }
/// <summary> /// 添加一个代理模型 /// </summary> /// <typeparam name="TProxy"></typeparam> /// <param name="name">代理名称</param> /// <param name="options">代理配置选项</param> /// <returns></returns> public ProxyManager UseProxy <TProxy>(string name = "", dynamic options = null) { if (options == null) { options = FrameDLRObject.CreateInstance(); } var t = typeof(TProxy); if (ComFunc.nvl(name) == "") { name = t.Name.ToLower().Replace("proxy", "").Replace("module", ""); } if (!_proxys.ContainsKey(name)) { _proxys.Add(name, new ProxyEntity(t)); //模块执行初始化作业 FrameExposedObject.From(this[name]).OnUsed(this, options); } return(this); }
protected override BaseModule CreateModuleInstance() { return((BaseModule)FrameExposedObject.Create(moduletype)); }
public static void Test() { Console.OutputEncoding = Encoding.UTF8; var dt = DateTime.Now; var sctb = new StaticClassTest("a"); var m_type = sctb.GetType(); Console.WriteLine($"1.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; var method = m_type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); List <string> atl = new List <string>(); foreach (var m in method) { if (m.CustomAttributes.Count() > 0) { foreach (var ca in m.CustomAttributes) { atl.Add(ca.AttributeType.Name.Replace("attribute", "")); } } } //var list = m_type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance) // .Where(m => m.Name.ToLower() == "post") // .OrderBy(p => p.GetParameters().Length) // .ToList(); Console.WriteLine($"2.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; atl.Clear(); for (int i = 0; i < 10; i++) { var l = method .Where(m => m.CustomAttributes.Count() > 0) .Select(m => m.CustomAttributes.Select(sl => sl.AttributeType.Name.Replace("attribute", ""))); Console.WriteLine($"3.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } //foreach (var item in l) //{ // atl.AddRange(item); //} Console.WriteLine($"3.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; for (int i = 0; i < 10; i++) { var l = method .Where(m => !m.IsGenericMethod) .Where(m => m.CustomAttributes.Count() > 0) .Select(m => m.CustomAttributes.Select(sl => sl.AttributeType.Name.Replace("attribute", ""))); Console.WriteLine($"3.1.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } var filterlist = atl.Distinct().ToList(); Console.WriteLine($"4.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; var s = FrameExposedClass.From(typeof(StaticClassTest)); Console.WriteLine($"5.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; var ff = FrameExposedObject.From(typeof(StaticClassTest)); Console.WriteLine($"6.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; s.Check(new object[] { "ych", 1 }); //StaticClassTest.Check("a"); Console.WriteLine($"7.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; ff.CheckMe(new object[] { "ych2", 2 }); Console.WriteLine($"8.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; s.Check(new object[] { "ych", 1 }); //StaticClassTest.Check("a"); Console.WriteLine($"9.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; HostJs.DefaultEngineName = ""; var fdlr = FrameDLRObject.CreateInstance(@"{ issuccess:true, msg:'' }"); Console.WriteLine($"10" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; for (var i = 0; i < 10; i++) { var fdlr2 = FrameDLRObject.CreateInstanceFromat(@"{ issuccess:false, msg:'{0}' }", DateTime.Now.ToString("fff")); Console.WriteLine($"11" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } for (var i = 0; i < 10; i++) { var fdlr2 = FrameDLRObject.CreateInstanceFromat(@"{ issuccess:true, name:{1}, msg:'{0}', ep:{ age:20, sex:'male' } }", DateTime.Now.ToString("fff"), "ych"); Console.Write(((FrameDLRObject)fdlr2).ToJSONString()); Console.WriteLine($"11.1" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } for (var i = 0; i < 10; i++) { var fdlr2 = FrameDLRObject.CreateInstanceFromat(@"{ issuccess:false, msg:'{0}' }", DateTime.Now.ToString("fff")); Console.WriteLine($"11.2" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } //fdlr.getvalue("a"); for (var i = 0; i < 10; i++) { var fdlr3 = FrameDLRObject.CreateInstance(new { issuccess = false, msg = "" }); Console.WriteLine($"12" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; ((FrameDLRObject)fdlr3).ToJSONString(); Console.WriteLine($"12.1" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } for (var i = 0; i < 10; i++) { var fdlr3 = FrameDLRObject.CreateInstance(new { issuccess = true, msg = "哈哈" }); Console.WriteLine($"13" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; Console.WriteLine($"13.1" + $".time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } //s.Check(new object[] { "ych", 1 }); //Console.WriteLine($"time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); //dt = DateTime.Now; //s = FrameExposedClass.From(typeof(StaticClassTestB)); //if (((FrameExposedClass)s).HasMethod("Check")) // s.Check(new object[] { "ych", 1, 23, 1 }); //Console.WriteLine($"time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); //dt = DateTime.Now; //List<int> realList = new List<int>(); //dynamic exposedList = FrameExposedObject.From(realList); //// Read a private field - prints 0 //Console.WriteLine(exposedList._size); //// Modify a private field //exposedList._items = new int[] { 5, 4, 3, 2, 1 }; //// Modify another private field //exposedList._size = 5; //// Call a private method //exposedList.EnsureCapacity(20); //// Add a value to the list //exposedList.Add(0); //// Enumerate the list. Prints "5 4 3 2 1 0" //foreach (var x in exposedList) Console.WriteLine(x); //Console.WriteLine($"time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); var jse = HostJs.NewInstance("chakra"); for (var i = 0; i < 10; i++) { var re = jse.Evaluate(@"function test(){c.WriteLine('js run');return {issuccess:true,msg:''}} test();", new KeyValuePair <string, object>("c", new Conss())); Console.WriteLine($"20.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } for (var i = 0; i < 10; i++) { var re = jse.Evaluate(@"function test(){c.WriteLine('js2 run'+new Date().getYear());return {issuccess:false,msg:'呵呵'}} test();", new KeyValuePair <string, object>("c", new Conss2())); Console.WriteLine($"20.time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); dt = DateTime.Now; } jse.Dispose(); //dt = DateTime.Now; //jse = HostJs.NewInstance(""); //re = jse.Evaluate(@"function test2(){c.WriteLine('js2 run');return {issuccess:false,msg:''}} test2();", new KeyValuePair<string, object>("c", new Conss())); //jse.Dispose(); //Console.WriteLine($"time cast {(DateTime.Now - dt).TotalMilliseconds}ms"); Console.ReadKey(); }