コード例 #1
0
        public virtual ISDataResults Execute(SDataParameters parms)
        {
            var request  = CreateRequest(parms, true);
            var response = request.GetResponse();

            TraceResponse(response);
            return(SDataResults.FromResponse(response));
        }
コード例 #2
0
        private ISDataResults <T> CreateResults <T>(SDataResponse response)
        {
            TraceResponse(response);

            object obj = null;

            if (typeof(T) == typeof(byte[]))
            {
                var str = response.Content as string;
                if (str != null)
                {
                    obj = Encoding.UTF8.GetBytes(str);
                }
            }
            else if (typeof(T) == typeof(string))
            {
                var data = response.Content as byte[];
                if (data != null)
                {
                    obj = Encoding.UTF8.GetString(data);
                }
            }
#if !PCL && !NETFX_CORE && !SILVERLIGHT
            else if (typeof(T) == typeof(SDataSchema))
            {
                var str = response.Content as string;
                if (str != null)
                {
                    using (var memory = new MemoryStream(Encoding.UTF8.GetBytes(str)))
                    {
                        obj = SDataSchema.Read(memory);
                    }
                }
            }
#endif
            T content;
            if (obj != null)
            {
                content = (T)obj;
            }
            else
            {
                content = ContentHelper.Deserialize <T>(response.Content, NamingScheme);
                var tracking = content as IChangeTracking;
                if (tracking != null)
                {
                    tracking.AcceptChanges();
                }
            }
            return(SDataResults.FromResponse(response, content));
        }