/// <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);
     }
 }
Пример #2
0
        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;
            }
Пример #5
0
        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));
 }
Пример #8
0
        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();
        }