tag 标签: 小白

相关资源
  • 所需E币: 0
    时间: 2023-11-30 15:33
    大小: 3.79KB
    WPF主要编程模型通过托管代码公开。在WPF的早期设计阶段,曾有过大量关于如何界定系统的托管组件和非托管组件的争论。CLR提供一系列的功能,可以提高开发效率和可靠性(包括内存管理、错误处理和通用类型系统等),但这是需要付出代价的。PresentationFramework、PresentationCore和milcore是WPF的主要代码部分。在这些组件中,只有一个是非托管组件-milcore。milcore是以非托管代码编写的,目的是实现与DirectX的紧密集成。WPF中的所有显示均通过DirectX引擎完成,因此硬件和软件呈现都很高效。WPF还要求对内存和执行进行精细控制。milcore中的组合引擎受性能影响极大,需要放弃CLR的许多优点来提高性能。生成WPF时使用的主要体系结构原理之一是首选属性而不是方法或事件。属性具有声明性,可更方便地指定用途而不是操作。它还支持模型驱动或数据驱动的系统,以显示用户界面内容。这种理念的预期效果是创建更多可以绑定到的属性,从而更好地控制应用程序的行为。publicclassPaginationResourceParamaters{  privateint_pageNumber=1;  publicintPageNumber  {    get    {      return_pageNumber;    }    set    {      if(value>=1)      {        _pageNumber=value;      }    }  }  privateint_pageSize=10;  constintmaxPageSize=50;  publicintPageSize  {    get    {      return_pageSize;    }    set    {      if(value>=1)      {        _pageSize=(value>maxPageSize)?maxPageSize:value;      }    }  }}控件的最重要功能是模板化。如果将WPF的组合系统视为一个保留模式绘制系统,则控件可通过模板化以一种参数化的声明性方式描述其绘制。ControlTemplate实际上只是用于创建一组子元素的脚本,绑定到由控件提供的属性。if(!string.IsNullOrWhiteSpace(orderBy)){  if(orderBy.ToLowerInvariant()=="originalprice")  {    result=result.OrderBy(t=>t.OriginalPrice);  }  //result.ApplySort(orderBy,_mappingDictionary);}文件创建完成,回到旅游路线参数处理器文件,我们把分页相关的代码全部剪切到刚刚创建的新文件中。publicclassPaginationResourceParamaters{  privateint_pageNumber=1;  publicintPageNumber  {    get    {      return_pageNumber;    }    set    {      if(value>=1)      {        _pageNumber=value;      }    }  }  privateint_pageSize=10;  constintmaxPageSize=50;  publicintPageSize  {    get    {      return_pageSize;    }    set    {      if(value>=1)      {        _pageSize=(value>maxPageSize)?maxPageSize:value;      }    }  }}首先,把函数的返回语句全部comment掉,因为我们将要返回的不在是普通的列表,而是特殊的分页列表类型,PaginationList。接下来,重点来了,我们需要使用一个IQueryable延迟执行的语句来创建分页处理组件PaginationList。所以,IQueryableresult等于使用复制粘贴return的数据库访问语句代码,_context点Orders点Where。接下来,使用PaginationList的工厂函数来创建分页操作,执行异步操作await,Order类型的PaginationList,调用CreateAsync,异步创建创建分页操作的实例。最后直接返回这个实例就可以了。publicasyncTask<PaginationList<Order>>GetOrdersByUserId(  stringuserId,intpageSize,intpageNumber){  //returnawait_context.Orders.Where(o=>o.UserId==userId).ToListAsync();  IQueryable<Order>result=_context.Orders.Where(o=>o.UserId==userId);  returnawaitPaginationList<Order>.CreateAsync(pageNumber,pageSize,result);}第三方支付就是一个api请求,对于这个新的api,我们来新建一个控制器来单独处理吧,请同学们右键点击contorleres文件夹,文件名称第三方支付模拟处理器FakeVanderPaymentProcessController[ApiController][Route("api/[controller]")]publicclassFakeVanderPaymentProcessController:ControllerBase{  [HttpPost]  publicasyncTask<IActionResult>ProcessPayment(    [FromQuery]GuidorderNumber,    [FromQuery]boolreturnFault=false  )  {    //假装在处理    awaitTask.Delay(3000);    //ifreturnFaultistrue,返回支付失败    if(returnFault)    {      returnOk(new      {        id=Guid.NewGuid(),        created=DateTime.UtcNow,        approved=false,        message="Reject",        payment_metohd="信用卡支付",        order_number=orderNumber,        card=new{           card_type="信用卡",          last_four="1234"        }      });    }    returnOk(new    {      id=Guid.NewGuid(),      created=DateTime.UtcNow,      approved=true,      message="Reject",      payment_metohd="信用卡支付",      order_number=orderNumber,      card=new      {        card_type="信用卡",        last_four="1234"      }    });  }}在order控制器中完成对这个服务的依赖注入privatereadonlyIHttpContextAccessor_httpContextAccessor;privatereadonlyITouristRouteRepository_touristRouteRepository;privatereadonlyIMapper_mapper;privatereadonlyIHttpClientFactory_httpClientFactory;publicOrdersController(  IHttpContextAccessorhttpContextAccessor,  ITouristRouteRepositorytouristRouteRepository,  IMappermapper,  IHttpClientFactoryhttpClientFactory){  _httpContextAccessor=httpContextAccessor;  _touristRouteRepository=touristRouteRepository;  _mapper=mapper;  _httpClientFactory=httpClientFactory;}状态机完成,请同学们回答控制器。如果支付成功,使用订单order调用PaymentApprove函数,订单状态就会改变为支付成功,else{},如果支付失败,那么使用订单order调用PaymentReject,这样订单状态就会改变为失败了。//5.如果第三方支付成功.完成订单if(isApproved){  order.PaymentApprove();} else{  order.PaymentReject();}order.TransactionMetadata=transactionMetadata;await_touristRouteRepository.SaveAsync();其实json补丁就是一个json结构的数据,用来表达对目标数据的一些列操作,比如说,假定我们又一条旅游路线1234的数据是这样的{"id":"fb6d4f10-79ed-4aff-a915-4ce29dc9c7e1","title":"埃及阿斯旺12日跟团游","description":"【官方旗舰明星纯玩团】25人封顶|含签证小费全程餐|3晚尼罗河游轮+3晚红海全包度假村+1晚底比斯古都|升级内陆飞机|优质中文导游队伍|七大神庙+赠项目","originalPrice":11999.99,"discountPercent":0.1,"points":null,"features":null,"picture":{"url":"../images/abcdefg.jpg"}}WPF可创建动态的数据驱动的呈现系统。系统的每一部分均可通过驱动行为的属性集来创建对象。数据绑定是系统的基础部分,在每一层中均进行了集成。传统的应用程序创建一个显示内容,然后绑定到某些数据。在WPF中,控件的所有内容、显示内容的所有方面都是由某种类型的数据绑定生成的。通过在按钮内部创建复合控件并将其显示内容绑定到按钮的内容属性,会显示按钮中的文本。publicclassTouristRouteTitleMustBeDifferentFromDescriptionAttribute:ValidationAttribute{  protectedoverrideValidationResultIsValid(    objectvalue,     ValidationContextvalidationContext  )  {    vartouristRouteDto=(TouristRouteForCreationDto)validationContext.ObjectInstance;    if(touristRouteDto.Title==touristRouteDto.Description)    {      returnnewValidationResult(        "路线名称必须与路线描述不同",        new[]{"TouristRouteForCreationDto"}      );    }    returnValidationResult.Success;  }}
  • 所需E币: 1
    时间: 2023-5-12 11:37
    大小: 8.78MB
    滚烫元宇宙:6小时从小白到资深玩家
  • 所需E币: 1
    时间: 2022-5-5 16:05
    大小: 35.13MB
    上传者: 西风瘦马
    《编程小白的第一本Python入门书》.pdf
  • 所需E币: 5
    时间: 2022-1-26 19:35
    大小: 235.58MB
    上传者: samewell
    Python从小白到大牛.pdf
  • 所需E币: 0
    时间: 2021-3-19 22:38
    大小: 6.45MB
    上传者: samewell
    Java从小白到大牛精简版
  • 所需E币: 3
    时间: 2020-12-27 22:31
    大小: 36.58MB
    上传者: stanleylo2001
    编程小白的第一本Python入门书
  • 所需E币: 1
    时间: 2020-12-22 23:16
    大小: 468.81KB
    上传者: sense1999
    从此告别PCB小白,一文教你如何创建完整PCB工程及输出文档
  • 所需E币: 0
    时间: 2020-9-18 19:23
    大小: 38.52MB
    上传者: LGWU1995
    编程小白的第一本Python入门书
  • 所需E币: 0
    时间: 2020-9-19 22:42
    大小: 34.62MB
    上传者: bwj312
    编程小白的第一本Python入门书
  • 所需E币: 5
    时间: 2020-9-19 22:30
    大小: 7.88MB
    上传者: bwj312
    Java从小白到大牛精简版.pdf
  • 所需E币: 0
    时间: 2020-9-18 18:54
    大小: 8.38MB
    上传者: LGWU1995
    Java从小白到大牛
  • 所需E币: 1
    时间: 2020-2-26 21:11
    大小: 15.44KB
    上传者: 十次方
    伴随着互联网的发展,IT人才的需求越来越大;据不完全预测,现在中国市场对IT人才的需求每年超过100万人,除北京、上海外,绝大部分的需求集中在华南、华东地区的大中型城市。而国内目前的IT教育主要是高等学校的计算机、电子、电信、信息技术等相关专业的学历教育,每年培养的大学毕业生远远不能满足市场的需要。为了能适应市场对IT人员的需求,对于我们想进入这一行的个人来说,应该赶快行动起来,以使自己能适应社会的需要。