C# 工具包 Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线
更新内容
完全基于表达式树的模型验证器
本版本,我们带来了基于表达式树实现的模型验证器。并实现了很多内置的验证方法。
我们罗列了与 FluentValidation 比较的情况:
Build in Validators | FluentValidation 9.X | Newbe.ObjectVistor |
---|---|---|
NotNull | ✔️ | ✔️ NotNull; class |
NotEmpty | ✔️ | ✔️ NotEmpty; string,enumerable |
NotEqual | ✔️ | ✔️ NotEqual; all |
Equal | ✔️ | ✔️ Equal; all |
Length | ✔️ | ✔️ Length; string,enumerable |
MaxLength | ✔️ | ✔️ MaxLength; string,enumerable |
MinLength | ✔️ | ✔️ MinLength; string,enumerable |
Less Than | ✔️ | ✔️ LessThan; number |
Less Than Or Equal | ✔️ | ✔️ LessThanOrEqual; number |
Greater Than | ✔️ | ✔️ GreaterThan; number |
Greater Than Or Equal | ✔️ | ✔️ GreaterThanOrEqual; number |
Predicate | ✔️ | ✔️ Validate; all |
Regular Expression | ✔️ | ✔️ MatchRegex,NotMatchRegex; string |
✔️ | 💭 MatchRegex; string | |
Credit Card | ✔️ | 💭 MatchRegex; string |
Enum | ✔️ | ✔️ IsInEnum; number,string,enum |
Enum Name | ✔️ | ✔️ IsEnumName; string |
Empty | ✔️ | ✔️ Empty; string,enumerable |
Null | ✔️ | ✔️ Null; class |
ExclusiveBetween | ✔️ | ✔️ IsInRange; number,enum |
InclusiveBetween | ✔️ | ✔️ IsInRange; number,enum |
ScalePrecision | ✔️ | ✔️ ScalePrecision; number |
Or | ❌ | ✔️ Or; all |
IsInSet | ❌ | ✔️ IsInSet; all |
IsNotInSet | ❌ | ✔️ IsNotInSet; all |
CanParse | ❌ | 🚧 CanParse; all |
FluentAPI 生成器重构的代码
我们基于 0.3 已经发布的 FluentAPI 进行了核心代码重构,现在一些特定场景下需要您指定的泛型参数更少了,但是功能没有减少,更有利您进行开发。
类似的,例如下面这个变更:
// create a data visitor to cover sensitive data _visitor = default(UserModel).V() - .ForEach<UserModel, string>(x => CoverSensitiveData(x)) + .ForEach<string>(x => CoverSensitiveData(x)) .Cache();
同时支持英文与简体中文方法注释
在热心网友 EventHorizon1024 的帮助下,我们在保留英文作为原始注释的情况下,对使用简体中文 IDE 的开发者们提供了全简中的方法说明。
开发者无需特殊操作,便可以在 IDE 中直接查看到简体中文的方法注释。
如何实现的详细操作方法,开发者也可以通过以下链接借鉴使用:
https://github.com/dotnet/roslyn/issues/3371#issuecomment-737623706
开发文章站点正式上线
我们非常顺利的上线了开发文档站点:
- http://ov.newbe.pro
- http://cn.ov.newbe.pro 中国大陆访问更快
- https://github.com/newbe36524/Newbe.ObjectVisitor.Docs
后续所有关于本工具包相关的文章除了在博客 https://www.newbe.pro 及相关博客公布之外,我们将会更新以上站点,丰富其中的文档。
目前,我们已经上线了几篇简单的文档:
项目说明
Newbe.ObjectVisitor 帮助开发者可以用最简单的最高效的方式访问一个普通 class 的所有属性。从而实现:验证、映射、收集等等操作。
例如, 在你的代码中有这样一个简单的类。
var order = new OrderInfo();
你想要将这个类所有的属性和值都打印出来,那么你可以采用反射来完成:
for(var pInfo in typeof(OrderInfo).GetProperties()) { Console.Writeline($"{pInfo.Name}: {pInfo.GetValue(order)}"); }
如果你使用这个类库,则可以采用以下方式来实现一样的效果:
// call .V what is a static extension method // you get a visitor object for order var visitor = order.V(); visitor.ForEach(context=>{ var name = context.Name; var value = context.Value; Console.Writeline($"{name}: {value}"); }).Run(); // you can also make it into one line order.V().ForEach(c=> Console.Writeline($"{c.Name}: {c.Value}")).Run(); // or using quick style order.FormatToString();
那我为什么要这样做?
- 因为这样更快!这个类库使用表达式树实现,因此它拥有比直接使用反射快上10倍的性能.
- 因为这样更可读!通过这个类库你可以使用链式API和命名方法来创建一个委托,这样可以让你的代码实现和硬编码同样的可读效果。
- 因为这样更具扩展性!如果使用了这个类库,你就拥有了一个简便的方法来访问一个类所有的属性。因此,你就做很多你想做的事情,比如:创建一个验证器来验证你的模型,修改一些可能包含敏感数据的属性从而避免输出到日志中,创建一个类似于AutoMapper的对象映射器但是拥有更好的性能,诸如此类。
GitHub 项目地址:https://github.com/newbe36524/Newbe.ObjectVisitor
Gitee 项目地址:https://gitee.com/yks/Newbe.ObjectVisitor

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
易水组件 5.1.0 发布,安全功能开箱即用,token 自动续签
此版本对代码进行了大量的重构,并对代码结构进行了重新划分,优化了隐藏的历史问题。在本次更新中,为组件中的各个模块都增加启用停用开发,用户在使用本组件时可以按需加载所需要的功能,不再因为其他未使用的功能模块对本地复杂应用环境造成影响。同时在本次更新中,重新定义了异常处理功能,使用户可以根据不同精确度对不同的异常配置自定义的异常提示信息,并提取出了异常信息工具,使异常处理功能更加合理,使用范围更广泛。 针对组件中的核心功能--安全模块,本次更新中对代码按照功能进行了拆分,重构为基础安全模块和oauth2模块,让用户根据需要引用不用程度的安全功能,更加合理的保护自己的应用程序。与此同时,组件融合了资源服务器功能,让用户能一键将本地应用快速变身为oauth2资源服务器,快速接入认证系统。 本次主要更新点如下: 内置spring security访问令牌生成功能 自动校验请求中访问令牌并自动续签 优化OAuth2令牌生成规则,自动更新令牌过期时间 精简spring security配置参数,优化处理流程 优化验证码校验逻辑,新增验证码校验接口 优化异常信息定义,可携带更多异常信息 优化资源管理处...
- 下一篇
WePush v4.2.2 已经发布,消息批量推送工具
WePush v4.2.2 已经发布,这是一个消息批量推送工具。 此版本更新内容包括: feature:微信公号和小程序消息支持按多账号分组管理 feature:保存了编辑每条消息时的预览用户,下次预览不再烦恼 feature:设置tab新增调试模块和查看日志按钮 fix:修复公众号模板消息模板列表为空时的后台报错 optimization:部分sender客户端连接池调整 optimization:调整判断所有线程都执行完毕的逻辑 optimization:1.批量升级依赖版本 2.移除小程序模板消息相关消息构造器和发送器 3.调整小程序统一服务消息功能 4.代码细节和文案细节调整 下载地址:https://github.com/rememberber/WePush/wiki/download 详情查看:https://gitee.com/zhoubochina/WePush/releases/v4.2.2
相关文章
文章评论
共有0条评论来说两句吧...