C#工具包 Newbe.ObjectVisitor 0.3.7 发布,自动生成 FluentAPI

栏目: 软件资讯 · 发布时间: 5年前

内容简介:Newbe.Claptrap 0.3.7 发布,自动生成 FluentAPI。 更新内容 原本,我们希望在 0.3 引入 mapper 或者 validation 其中之一。但是我们发现,我们需要完成更高层次的抽象才能更好的开展后续的工作。 因此。 0.3 版本...

Newbe.Claptrap 0.3.7 发布,自动生成 FluentAPI。

更新内容

原本,我们希望在 0.3 引入 mapper 或者 validation 其中之一。但是我们发现,我们需要完成更高层次的抽象才能更好的开展后续的工作。

因此。 0.3 版本我们完成了一个既酷炫又新奇,既引人深思又充满快乐的特性:

基于状态图自动生成任意设计的 FluentAPI。

详细说明的篇幅很长,可以通过参阅下面这篇文章进行查看:

我画着图,FluentAPI 她自己就生成了

项目说明

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

C#工具包 Newbe.ObjectVisitor 0.3.7 发布,自动生成 FluentAPI


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

基于MVC的JavaScript Web富应用开发

基于MVC的JavaScript Web富应用开发

麦卡劳(Alex MacCaw) / 李晶、张散集 / 电子工业出版社 / 2012-5 / 59.00元

《JavaScript Web 富应用开发》Developing JavaScript Web Applications是 Alex MacCaw 的新作(由O'Reilly出版发行),本书系统而深入的讲解了如何使用最前沿的Web技术构建下一代互联网富应用程序。作者 Alex MacCaw 是一名Ruby/JavaScript 程序员,在开源社区中很有名望,是Spine框架的作者,同时活跃在纽约、......一起来看看 《基于MVC的JavaScript Web富应用开发》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具