zoukankan      html  css  js  c++  java
  • P37 排序(中)



    今天来实现属性映射服务

    这行代码先注释掉

    Services里面创建PropertyMappingService

    创建PropertyMappingValue


    Name对应的entity的firstName和lastname就放在DestinationProperties里面。

    然后再添加构造函数,把定义的两个属性传递进去

    第二个参数,使用Resharp的功能自动生成。

    自动生成

    这个参数也可以用Resharp来生成,只不过可能有一些慢。

    正对集合,就需要判断是否等于null

    创建映射到属性。

    默认设置为false

    比较的时候忽略大小写

    name在EmployeeDto上面对应entity上面两个属性 FirstName和LastName

    age虽然是一一对应的,但是需要把revert反转。

    以上从employeeDto到employeeEntity的映射关系就配置好了。放到了一个Dictionary里面

    再定义方法根据传入的类型获取映射关系



    现在先建一个类,把这些映射关系存到里面。PropertyMapping





    重构下改成大写的

    这里不支持泛型的解析,所以显示红色报错


    这个时候可以使用标记接口。定义一个接口,接口内没有定义任何的属性和方法,相当于是一个空的接口。这个接口的作用就是给某些类打上标签。所以现在要建立接口,让PropertyMapping实现这个接口。

    创建接口


    实现这个接口





    new一个对象出来防止出现空指针的异常


    再来做个构造函数











    这里加了个toList

    梳理下

    首先这个里Dictonary存的就是映射关系。从dto一个属性可以映射到多个属性。多个属性就放到PropertyMappingValue里面。PropertyMappingValue这个类型里面有集合,就可以存放多个属性。

    mapping里面还有另外一个属性就是revert。顺序反转。

    每一段映射关系使用类来表示

    就是PropertyMapping这样一个类。

    实现一个标记接口,里面什么方法都没有,主要用他是因为想让service里面,

    上面实现接口,就是为了让这里的IList属性可以成功的建立。

    创建构造函数,就是把原始的映射关系存到IList这个集合里面。

    最后有个方法getPropertyMapping通过两个类型TSource和TDestination这两个类型把映射关系取出来。

    取出来的结果是Dictionary类型。

    实现依赖注入,resharp:ctrl+shift+R



    然后就在这个类里面构建了interface

    把接口挪到单独的文件里面:alt+enter

    这样就挪到了一个单独的文件里面

    startup注册service

    这个service属于比较轻量级的所以使用AddTransient

    repository内使用




    自动生成依赖注入

    加上判断是否为空

    先取出EmployeeDto到Employee的映射。

    这样他的第二个参数就已经有了。

    实现扩展方法




    它一个静态类。里面的方法也是静态方法。它是争对IQueryable扩展。





    判断空格


    反转

    取反,正序变倒叙,倒叙变正序

    最后就是用安装的扩展库进行排序了。

    安装扩展库





    最后返回source

    resharp自动稍微改一下


    测试


    倒叙排列












    由于数据有限,多个字段排序试不出来效果。

    测试下多个排序的语法



     

    结束

  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/14131189.html
Copyright © 2011-2022 走看看