Пример #1
0
        protected override void ParseDataCollection2Result(DataCollection d, ref object obj)
        {
            var rpd = (ResponseObject)d;
            var responsesobj = rpd.Result;
            var contenttype = rpd.ContentType;

            if (contenttype.ToLower().IndexOf("/xml") > 0)
            {
                if (obj is FrameDLRObject)
                {
                    var dobj = (FrameDLRObject)obj;
                    dobj.Load(responsesobj);
                }
                else if (obj is string)
                {
                    obj = ComFunc.nvl(responsesobj);
                }
            }
            else if (contenttype.ToLower().StartsWith("image")
                || contenttype.ToLower().StartsWith("audio")
                || contenttype.ToLower().StartsWith("video"))
            {
                if (obj is FrameDLRObject)
                {
                    dynamic dobj = (FrameDLRObject)obj;
                    dobj.content = responsesobj;
                    dobj.filename = rpd.FileName;
                    dobj.contenttype = contenttype;
                }
                else if (obj is Stream)
                {
                    if (responsesobj != null)
                        obj = new MemoryStream((byte[])responsesobj);
                }
            }
            else
            {
                if (obj is string)
                {
                    if (responsesobj is byte[])
                    {
                        obj = ComFunc.ByteToString(((byte[])responsesobj), Encoding.UTF8);
                    }
                    else
                    {
                        obj = ComFunc.nvl(responsesobj);
                    }
                }
                else if (obj is FrameDLRObject)
                {
                    var dobj = (FrameDLRObject)obj;
                    if (!(responsesobj is byte[]))
                    {
                        dobj.Load(responsesobj);
                    }
                }
                else
                {
                    FrameDLRObject dobj = FrameDLRObject.CreateInstance(responsesobj);
                    obj = dobj.ToModel(obj.GetType());
                }
            }
        }
        /// <summary>
        /// 从session中获取对象
        /// </summary>
        /// <param name="session"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static object GetObject(this ISession session, string key)
        {
            var str = session.GetString(key);

            if (string.IsNullOrEmpty(str))
            {
                return(null);
            }
            var arr = str.Split(';');

            if (arr.Length != 2)
            {
                return(null);
            }
            var assemblefullname = arr[0];
            var base64           = arr[1];

            var value        = ComFunc.Base64DeCode(base64.Replace(" ", "+"));
            var typefullname = assemblefullname.Substring(0, assemblefullname.IndexOf(","));
            var t            = Type.GetType(assemblefullname);

            if (typefullname == typeof(string).FullName)
            {
                return(value);
            }
            if (typefullname == typeof(FrameDLRObject).FullName)
            {
                return((FrameDLRObject)FrameDLRObject.CreateInstance(value, FrameDLRFlags.SensitiveCase));
            }
            if (t.GetTypeInfo().GetInterface(typeof(IJSONParsable).Name, true) != null)
            {
                var obj = (IJSONParsable)Activator.CreateInstance(t);
                obj.TryParseJSON(value);
                return(obj);
            }
            if (typefullname == typeof(int).FullName)
            {
                return(int.Parse(value));
            }
            if (typefullname == typeof(long).FullName)
            {
                return(long.Parse(value));
            }
            if (typefullname == typeof(float).FullName)
            {
                return(float.Parse(value));
            }
            if (typefullname == typeof(double).FullName)
            {
                return(double.Parse(value));
            }
            if (typefullname == typeof(decimal).FullName)
            {
                return(decimal.Parse(value));
            }
            if (typefullname == typeof(DateTime).FullName)
            {
                return(DateTimeStd.ParseStd(value, "yyyy/MM/dd HH:mm:ss fff").Value);
            }
            if (typefullname == typeof(bool).FullName)
            {
                return(bool.Parse(value));
            }


            FrameDLRObject dobj = FrameDLRObject.CreateInstance(value, FrameDLRFlags.SensitiveCase);

            return(dobj.ToModel(t));
        }