Newbe.ObjectVisitor 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Newbe.ObjectVisitor 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Newbe.ObjectVisitor 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C#
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 Newbe36524
适用人群 未知
收录时间 2020-11-01

软件简介

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的对象映射器但是拥有更好的性能,诸如此类。
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(4) 发布并加入讨论🔥
发表于开发技能专区
2020/12/09 08:55

C# 工具包 Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线

更新内容 完全基于表达式树的模型验证器 本版本,我们带来了基于表达式树实现的模型验证器。并实现了很多内置的验证方法。 我们罗列了与 FluentValidation 比较的情况: Build in Validators FluentValidation 9.X Newbe.ObjectVistor NotNull ✔️ ✔️ NotNull; class NotEmpty ✔️ ✔️ NotEmpty; string,enumerable NotEqual ✔️ :hea...

6
6
发表于开发技能专区
2020/11/17 09:13

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

Newbe.Claptrap 0.3.7 发布,自动生成 FluentAPI。 更新内容 原本,我们希望在 0.3 引入 mapper 或者 validation 其中之一。但是我们发现,我们需要完成更高层次的抽象才能更好的开展后续的工作。 因此。 0.3 版本我们完成了一个既酷炫又新奇,既引人深思又充满快乐的特性: 基于状态图自动生成任意设计的 FluentAPI。 详细说明的篇幅很长,可以通过参阅下面这篇文章进行查看: 《我画着图,FluentAPI 她自己就生成了》 项目说明...

1
6
发表于数据库专区
2020/11/09 09:02

C#工具包 Newbe.Claptrap 0.2.10 发布,更花里胡哨

Newbe.Claptrap 0.2.10 发布,更花里胡哨。 更新内容 我们增加了简体中文的项目说明: https://gitee.com/yks/Newbe.ObjectVisitor/blob/main/README_zh_Hans.md 现在,你可以通过上下文修改属性的值了: //✔️ from 0.2 // 可以修改属性 o.V().ForEach((context) => ModifyData(context)).Run(); public static void ModifyData(IObjectVisitorContext<Yueluo,string> context) { context.Value...

1
9
发表于开发技能专区
2020/11/02 09:15

Newbe.ObjectVisitor 0.1.4 发布,轻装登场

Newbe.Claptrap 0.1.4 发布,初始版本。 更新内容 我们发布了第一个版本。0.1 版本中我们完成了最基础的 ForEach API,并且实现了 FormatString 方法。 视频 与此类库相关的视频《戏精分享C#表达式树,第一季》已经顺利发布,总计约十个小时。开发者可以前往以下地址查看相关概念和用法。 https://www.bilibili.com/video/BV15y4y1r7pK 基准测试 我们对初始版本进行了基准测试。得出了以下结论,详细的内容也可以前往仓库首页查...

4
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
4 评论
25 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部