public static NetHandleResult GetEntityListResponseCommHandler <T>(this UserControl control, SimpleProtocolStruct response, IPEndPoint endpoint) where T : class, new() { var handleResult = JsonHelper.DeserializeTo <NetHandleResult>(response.ResponseData); control.Dispatcher.BeginInvoke(new Action <NetHandleResult>((result) => { if (result.ResultCode == NetHandleResultCode.Succeed) { var queryResult = JsonHelper.DeserializeTo <QueryResult <IList <T> > >(result.RetObject.ToString()); if (queryResult.ResultCode != 0) { MessageBox.Show(string.Format("服务处理失败,原因:{0}", queryResult.RetMsg)); return; } var entityList = queryResult.ResultData; if (null == entityList) { MessageBox.Show(string.Format("服务处理失败,原因:返回结果不是 List<DriverinfoEntity>,type = {0}", result.RetObject.GetType().Name)); return; } var viewModeList = entityList; var pageViewMode = new PaggingViewMode <T>(viewModeList); control.DataContext = pageViewMode; } else { MessageBox.Show(string.Format("后台请求:{0}调用失败,原因:{1}", response, result)); } }), DispatcherPriority.DataBind, new object[] { handleResult }); return(null); }
/// <summary> /// 最简单的Http请求(查询类)应答处理函数,需要自己扩展 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="control"></param> /// <param name="res"></param> /// <param name="context"></param> public static void GetEntityListResponseCommHandler <T>(this Control control, HttpResponse res, object context) where T : class, new() { control.Dispatcher.BeginInvoke(new Action <HttpResponse>((result) => { var strHandleMsg = ""; try { var requestUrl = res.RequestMessage?.RequestUri; if (null == result) { strHandleMsg = string.Format("服务处理{0}失败,应答数据为空!", requestUrl?.AbsolutePath); WaitingDialog.ChangeStateMsg(strHandleMsg); SLogger.Err(res.ToString()); return; } if (result.StatusCode == HttpStatusCode.OK) { var queryResult = JsonHelper.DeserializeTo <QueryResult <IList <T> > >(result.ResponseContent); if (null == queryResult) { strHandleMsg = $"服务器应答结果为空,系统异常,请联系管理员"; WaitingDialog.ChangeStateMsg(strHandleMsg); SLogger.Err(res.ToString()); return; } if (queryResult.ResultCode != 0) { strHandleMsg = string.Format("服务处理失败,原因:{0}", queryResult.RetMsg); WaitingDialog.ChangeStateMsg(strHandleMsg); SLogger.Err(res.ToString()); return; } var entityList = queryResult.ResultData; if (null == entityList) { strHandleMsg = string.Format("服务处理失败,返回结果不是数据列表,原因:{0}", queryResult.RetMsg); WaitingDialog.ChangeStateMsg(); SLogger.Err(res.ToString()); return; } var viewModeList = entityList; var pageViewMode = new PaggingViewMode <T>(viewModeList); control.DataContext = pageViewMode; WaitingDialog.Hide(); } else { strHandleMsg = string.Format("后台请求:调用失败,原因:{0}", result.ResponseContent); WaitingDialog.ChangeStateMsg(strHandleMsg); SLogger.Err(res.ToString()); return; } } catch (Exception ex) { strHandleMsg = string.Format("软件处理出错,msg:{0}", ex.Message); MessageBox.Show(strHandleMsg); SLogger.Err(res.ToString(), ex); } }), DispatcherPriority.DataBind, new object[] { res }); }