继上篇WPF企业级开发框架搭建指南介绍了在工作中搭建的一个开发框架,其实也就是到处搬运了一些代码而凑成了这么一个架子,自己手动写的代码倒不是很多,时间都花在了整合代码,把程序跑起来的过程中,好了,闲话少叙;另外框架的名字也不好取,遂就以JHRS命名了。
JHRS基础类库
在JHRS这个类库中,主要放置一些和业务无关但又不可缺失的代码,实际上对于每个项目而言,或多或少都有一些需要封装的类,这些类就组成了每个项目的基础的类库。
常见的文件帮助类,JSON序列化反序列化类,上传下载,网络,加密,反射等等这些。
上图只是在当前源码中,已经使用到了的一些封装,包含了JSON,扩展类,分页查询请求,集合,反射等。
例如在JHRS这个基础类库中,扩展了JSON,基础的转换类,如果您要序列化某个对象,直接调用ToJson方法即可,如下代码所示:
object o = new object(); var json = o.ToJson();
将json反序列化为对象就这样调用即可。
json.FromJsonString<object>();
而对于一些数据类型转换的方法,例如 字符串转数字,大家熟知的是调用Convert.ToInt32这个方法,或者 int.TryParse这个方法,您可以在基础类库里面再次封装一下,因为用Convert可能存在转换异常的问题,而int.Tryparse又存在代码繁杂的问题,因为你需要这样写才行。
int result = 0; int.TryParse("rex3", out result);
即使使用新的语法来写,看起来也不是那么的直观和优雅。那么封装后的统一写法支持泛型,并且不会出现转换错误了。下面的代码就是新的写法:
"34534xd".CastTo<int>();
在进行数据类型转换的时候,可以要求团队成员都统一调用 CastTo泛型方法,可以避免一些不经意而犯下的错误。
这和封装框架的初忠也是一样的,最终的目的是统一,包括代码风格。
基础类库的引用关系
JHRS基础类库在当前的解决方案中,是不会引用其它项目的,当然第三方组件另说,例如JSON就需要通过nuget引用Newtonsoft.Json;在当前解决方案中如果引用了其它项目,那就失去了基础类库本来的目的了,因为如果引用其它的项目,可能会存在循环引用的问题。
因此从这一点来说,基础类库,不含业务处理,在当前解决方案中不引用其它项目,但可以被其它任何项目引用,这样该类库就已经充当了基础类库的功能了。
写在最后
基础类库并不包含什么业务功能,可以非常方便的写出单元测试来测试每个方法是否符合预期行为。
有些代码都是直接拿的开源的直接剪裁放进去的,您也可以按照这种组织方式整合自己的基础类库。在github上有很多功能更全面的基础类库,可以找找。
好了,关于基础类库的简单介绍和目的已经交待清楚,下一篇将介绍第三方框架选用的一些问题。