我的第一个 Object Visitor
为了顺利的进行测试,你需要确保本地已经安装了以下这些必备的软件:
我们需要一个测试项目来演示如何创建一个属于你的第一个 Object Visitor。
首先,确保本地已经正确安装了 dotnet 2.1 或者以上版本的 sdk,你可以运行以下命令来确认当前安装的版本:
dotnet --info |
---|
然后,随便找一个你喜欢的文件夹,运行以下命令来创建用于演示的测试控制台程序:
dotnet new console |
---|
最后,继续运行以下命令来安装最新的 Newbe.ObjectVisitor 工具包:
dotnet add package newbe.objectvisitor |
---|
这样,用于测试的项目就创建完成了。
我们使用 IDE 打开刚刚创建的项目,添加一个简单的数据模型类 OrderInfo
:
public class OrderInfo{ public int OrderId { get; set; } public string Buyer { get; set; } public decimal TotalPrice { get; set; }} |
---|
我们在 Program.cs 中添加以下代码来完成这些逻辑:
new
一个 OrderInfo
order
StringBuilder
将 order
的所有属性名称和值拼接在一起string
using System;using System.Text;namespace yueluo_dalao_yes{ class Program { static void Main(string[] args) { var order = new OrderInfo { OrderId = 1, Buyer = "yueluo", TotalPrice = 62359.1478M }; var sb = new StringBuilder(); sb.AppendFormat("{0}: {1}{2}", nameof(order.OrderId), order.OrderId, Environment.NewLine); sb.AppendFormat("{0}: {1}{2}", nameof(order.Buyer), order.Buyer, Environment.NewLine); sb.AppendFormat("{0}: {1}{2}", nameof(order.TotalPrice), order.TotalPrice, Environment.NewLine); Console.WriteLine(sb.ToString()); } } public class OrderInfo { public int OrderId { get; set; } public string Buyer { get; set; } public decimal TotalPrice { get; set; } }} |
---|
我们使用以下命令来运行写好的逻辑:
dotnet run |
---|
就会得到以下这样的结果:
OrderId: 1Buyer: yueluoTotalPrice: 62359.1478 |
---|
我们通过 Newbe.ObjectVisitor 来一样实现上面的逻辑:
V()
扩展方法来创建一个 Object VisitorForEach
方法来注册 Visit 过程的行为using System;using System.Text;namespace yueluo_dalao_yes{ class Program { static void Main(string[] args) { var order = new OrderInfo { OrderId = 1, Buyer = "yueluo", TotalPrice = 62359.1478M }; var sb2 = new StringBuilder(); var visitor = order.V() .ForEach((name, value) => sb2.AppendFormat("{0}: {1}{2}", name, value, Environment.NewLine)); visitor.Run(); Console.WriteLine(sb2.ToString()); } } public class OrderInfo { public int OrderId { get; set; } public string Buyer { get; set; } public decimal TotalPrice { get; set; } }} |
---|
运行这个代码,你将会得到和上一节相同的结果。
首先,使用 Object Visitor 可以动态的适应模型类的变化,这点好处非常明显。
当 OrderInfo
中的属性增加时,“拼接部分” 的代码可以不用变化,实现动态的适配。
另外,还有一些好处是本示例没有体现的,将会在后续的文档中进行介绍:
Attribute
的过滤。使用反射来实现以上的效果也是可以的,但相较来说,Object Visitor 的实现方式在性能方面根据优势:
到这里,你已经初步了解了什么是 Newbe.ObjectVisitor,以及其基本的用法。
不过,这只是演示代码,展现的内容非常有限,因此,你还可以继续阅读下篇来进一步了解更多紧张刺激的特性。
开发文档可能随版本发生变化,查看最新的开发文档需移步 http://cn.ov.newbe.pro
GitHub 项目地址:https://github.com/newbe36524/Newbe.ObjectVisitor
Gitee 项目地址:https://gitee.com/yks/Newbe.ObjectVisitor
------ 本文结束 ------
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。