P37 排序(中)


P37 排序(中)

今天来实现属性映射服务
P37 排序(中)

这行代码先注释掉
P37 排序(中)

Services里面创建PropertyMappingService
P37 排序(中)

创建PropertyMappingValue
P37 排序(中)

Name对应的entity的firstName和lastname就放在DestinationProperties里面。
P37 排序(中)

然后再添加构造函数,把定义的两个属性传递进去
P37 排序(中)

第二个参数,使用Resharp的功能自动生成。
P37 排序(中)

自动生成
P37 排序(中)

这个参数也可以用Resharp来生成,只不过可能有一些慢。
P37 排序(中)

正对集合,就需要判断是否等于null
P37 排序(中)

创建映射到属性。
P37 排序(中)

默认设置为false
P37 排序(中)

比较的时候忽略大小写
P37 排序(中)

name在EmployeeDto上面对应entity上面两个属性 FirstName和LastName
P37 排序(中)

age虽然是一一对应的,但是需要把revert反转。
P37 排序(中)

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

再定义方法根据传入的类型获取映射关系
P37 排序(中)

P37 排序(中)

现在先建一个类,把这些映射关系存到里面。PropertyMapping
P37 排序(中)

P37 排序(中)

P37 排序(中)

重构下改成大写的
P37 排序(中)

这里不支持泛型的解析,所以显示红色报错
P37 排序(中)

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

创建接口

P37 排序(中)

实现这个接口
P37 排序(中)

P37 排序(中)

P37 排序(中)

new一个对象出来防止出现空指针的异常
P37 排序(中)

再来做个构造函数
P37 排序(中)

P37 排序(中)

P37 排序(中)

P37 排序(中)

P37 排序(中)

P37 排序(中)

这里加了个toList
P37 排序(中)

梳理下

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

mapping里面还有另外一个属性就是revert。顺序反转。
P37 排序(中)

每一段映射关系使用类来表示
P37 排序(中)

就是PropertyMapping这样一个类。
P37 排序(中)

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

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

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

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

取出来的结果是Dictionary类型。
P37 排序(中)

实现依赖注入,resharp:ctrl+shift+R
P37 排序(中)

P37 排序(中)

然后就在这个类里面构建了interface
P37 排序(中)

把接口挪到单独的文件里面:alt+enter
P37 排序(中)

这样就挪到了一个单独的文件里面
P37 排序(中)

startup注册service

这个service属于比较轻量级的所以使用AddTransient
P37 排序(中)

repository内使用


P37 排序(中)

自动生成依赖注入
P37 排序(中)

加上判断是否为空
P37 排序(中)

先取出EmployeeDto到Employee的映射。
P37 排序(中)

这样他的第二个参数就已经有了。
P37 排序(中)

实现扩展方法


P37 排序(中)

它一个静态类。里面的方法也是静态方法。它是争对IQueryable扩展。
P37 排序(中)

P37 排序(中)

P37 排序(中)

判断空格
P37 排序(中)
P37 排序(中)

反转
P37 排序(中)

取反,正序变倒叙,倒叙变正序
P37 排序(中)

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

安装扩展库
P37 排序(中)
P37 排序(中)

P37 排序(中)

最后返回source
P37 排序(中)

resharp自动稍微改一下
P37 排序(中)

P37 排序(中)

测试

P37 排序(中)

倒叙排列
P37 排序(中)

P37 排序(中)

P37 排序(中)

P37 排序(中)


P37 排序(中)

P37 排序(中)

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

测试下多个排序的语法

P37 排序(中)
P37 排序(中)

 

结束

 

以上是 P37 排序(中) 的全部内容, 来源链接: utcz.com/a/77177.html

回到顶部