Newbe.Claptrap 0.2.10 发布,更花里胡哨。
现在,你可以通过上下文修改属性的值了:
//✔️ from 0.2 // 可以修改属性 o.V().ForEach((context) => ModifyData(context)).Run(); public static void ModifyData(IObjectVisitorContext<Yueluo,string> context) { context.Value = context.Value.SubString(0,1); } |
---|
现在,支持多次 ForEach 操作:
// ✔️ from 0.2 // 多重 foreach o.V().ForEach((context)=>{}).ForEach((context)=>{}).Run(); |
---|
现在,支持更多花里胡哨的属性条件判断:
//✔️ from 0.2 // 遍历指定类型的属性 o.V().ForEach<Yueluo, string>((context) => {}); // 和上一条完全一样 o.V().ForEach<Yueluo, string>((context) => {}, x => x.PropertyType == typeof(string)); // 遍历被标记了 RequiredAttribute 的 string 属性 o.V().ForEach<Yueluo, string>((context) => {}, x => x.PropertyType == typeof(string) && x.GetCustomAttribute<RequiredAttribute>()); // 遍历“是”或者实现了 IEnumerable<int> 接口的属性, 例如 List<int>, int[], IEnumerable<int>, HashSet<int> 等等。 o.V().ForEach<Yueluo, IEnumerable<int>>((context) => {}, x => x.IsOrImplOf<IEnumerable<int>>()); // 指定属性类型,并包含一个扩展的参数 o.V().WithExtendObject<Yueluo, StringBuilder>().ForEach<Yueluo, StringBuilder, string>((context) => {}); |
---|
我们更新了两个基准测试:
详细的数据可以查看项目首页,此处仅给出图表说明。
新增了一些相关的经验文章:
我们增加了一些可以使用该库实现功能的场景和做法说明:
IEnumerable<int>
的所有属性求和。可以参阅《Newbe.ObjectVisitor 样例 1》
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();
GitHub 项目地址:https://github.com/newbe36524/Newbe.ObjectVisitor
Gitee 项目地址:https://gitee.com/yks/Newbe.ObjectVisitor
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。