让Visual Studio 2013为你自动生成XML反序列化的类

Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性。如:

  1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改、查找、定位情况一目了然。而不用像往常一样上下不停地拖动滚动条来定位到某一行,如果代码量很大,上下拖动滚动条着实让人很头疼。

  2. 括号、代码换行自动完成。在代码编写的过程中,输入左括号Visual Studio会自动帮你完成右括号,如果你不小心主动输入了右括号,也没有关系,Visual Studio会自动进行整理。代码编辑的智能程度比之前的版本有所提高。

  3. 每一个类或方法前面会自动添加references的数量,点击之后可以直接查找工程中哪些地方有引用,非常直观。

  4. 还有许多优化。

  Visual Studio 2013用得不太多,所以许多新增的功能只能以后慢慢再发掘。这里介绍一个很有用的功能,自动生成XML反序列化的类。以往想要在代码中将XML反序列化成对象,我们要么手动创建这些对象(很容易出错),要么借助于第三方的工具来生成Class。而现在,Visual Studio 2013可以自动帮我们完成这个工作。当然,如果你对XML反序列化并不感兴趣,而热衷于使用XElement或者XMLDocument来加载和解析XML,那么你可以忽略本文的内容。

  来看看在Visual Sutdio 2013中如何使用这个功能!

  1. 创建一个工程,或者打开现有的工程。必须要有一个工程啊!不然所生成的Classes如何编译和运行呢?

  2. 新建一个XML文件,输入你希望的内容。如:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<Cars><Car><StockNumber>1020</StockNumber><Make>Nissan</Make><Model>Sentra</Model></Car><Car><StockNumber>1010</StockNumber><Make>Toyota</Make><Model>Corolla</Model></Car><Car><StockNumber>1111</StockNumber><Make>Honda</Make><Model>Accord</Model></Car>
</Cars>
复制代码

  3. 全选整个XML文件的内容,Ctrl+C复制。

  4. 创建一个.cs文件或打开工程中现有的.cs文件,将光标定位到你要创建一个Class的地方。

  4. 选择Edit->Paste Special->Paste XML As Classes,OK!你会看到Visual Studio已经为你生成好了反序列化的Classes。

  很方便吧!你可以对生成的Classes做任何修改,包括修改属性和对象的名称以及类型,修改代码逻辑和包含关系等。但有一点需要注意!反序列化的类必须要能匹配所对应的XML文档的结构,否则在代码中进行反序列化操作时会失败。下面这个方法通过反序列化上面给出的XML,找出对应makeName的CarsCar对象。

复制代码
public static CarsCar GetCar(string makeName)
{string xmlFilePath = "c:\\XMLFile1.xml";Cars cars = null;XmlSerializer serializer = new XmlSerializer(typeof(Cars));using (FileStream fs = new FileStream(xmlFilePath, FileMode.Open)){using (XmlReader reader = XmlReader.Create(fs)){cars = (Cars)serializer.Deserialize(reader);}}if (cars != null){CarsCar car = cars.Car.Where(n => n.Make == makeName).FirstOrDefault();if (car != null){return car;}}return null;
}
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20年的 .NET ,更需要 00 后的你

.NET 20 周年&#xff0c; 在国内有一大批和 .NET 一起成长的开发者&#xff0c;有一大批在不同行业采用 .NET 作为解决方案的企业。或者你会经常听到很多的大神说他的 .NET 经历&#xff0c;也会听到 .NET “牛逼” 的故事&#xff0c;更会听到用 .NET 不用“996”的神话。但对…

UIT创新科存储系统服务“500强”汽车名企

信息化已成为汽车产业链各企业提高市场竞争力和传统汽车产业谋求转型升级的推动力&#xff0c;无论是汽车生产商&#xff0c;还是汽车服务商和零配件生产商&#xff0c;无不重视信息化系统的建设。某全球汽车行业著名的零配件生产商&#xff0c;财富500强企业之一&#xff0c;从…

通过从备份中排除这些文件夹来节省Time Machine驱动器上的空间

Are you getting notifications about a full Time Machine drive? Do you feel like your backups are taking too long? A bigger, faster hard drive might be the best solution, but you can also help by excluding particular folders from your backups. 您是否收到有…

c#调用触滑输入法实现触摸屏键盘功能

背景最近在做一个项目&#xff0c;用户端是触摸屏&#xff0c;涉及到一些表单数据的操作&#xff0c;因为是没有外接的鼠标键盘&#xff0c;所以想着当用户在操作表单的时候&#xff0c;能够把软件键盘输入法给调出来使用。什么是触滑输入法触滑输入法Swype&#xff0c;是针对触…

Teradata天睿公司推出适用各种部署环境的全球最强分析数据库

Teradata天睿公司&#xff08;Teradata Corporation&#xff0c;纽交所&#xff1a;TDC&#xff09;推出Teradata Everywhere™&#xff0c;成为业内首家在多种公有云、托管云和本地部署环境下部署全球最强海量并行处理&#xff08;MPP&#xff09;分析数据库的厂商。这些部署环…

如何使用智能铃声避免在Android中令人尴尬的大声铃声

Choosing a ringtone volume can be hard – there is no one setting that is right for all environments. What works perfectly at home may be too quiet for when you’re on the train, but too loud for the office. Intelligent Ringer can be used to adjust ringto…

为什么要把类设置成密封?

前几天笔者提交了关于FasterKvCache的性能优化代码&#xff0c;其中有一个点就是我把一些后续不需要继承的类设置为了sealed密封类&#xff0c;然后就有小伙伴在问&#xff0c;为啥这个地方需要设置成sealed&#xff1f;提交的代码如下所示&#xff1a;一般业务开发的同学可能接…

Java 打飞机(小游戏)[版权非本人 本人制作收藏整理]

今天在网络上 看到一个纯java的小游戏 代码copy到 myeclipse中 居然效果还不错 这是一些效果图 当然了 图片是我自己找的 有心兴趣的朋友可以做的好看一点 具体的代码 都放在自己的文件里去了 那么可以去下载 https://i.cnblogs.com/Files.aspx 转载于:https://www.cnblogs…

nest 架构_当有人打来您的Nest Hello时,如何让Google Home通知您

nest 架构The Nest Hello can alert you on your phone whenever someone rings your doorbell, but if you have a Google Home, you can also have Google Assistant audibly announce that someone is at the door. 无论何时有人按下门铃&#xff0c; Nest Hello都会在电话上…

如何序列化派生类

前言假设有一个 Person 抽象基类&#xff0c;其中包含 Student 和 Teacher 派生类&#xff1a;public class Person {public string Name { get; set; } }public class Student : Person {public int Score { get; set; } }public class Teacher : Person {public string Title…

nexus 手动增加_如何使用Google的工厂图像手动升级Nexus设备

nexus 手动增加Google’s Nexus devices are supposed to receive timely updates, but the staggered rollout means it can take weeks for devices to receive over-the-air (OTA) updates. Luckily, there’s a faster (and geekier) way to install the latest version of…

WPF-16 图形处理

我们这节主要介绍WPF常用画图标签&#xff0c;由于WPF图形处理设计大量篇幅 ,我们在这里抛砖引玉&#xff0c;具体更多的学习资料链接https://github.com/microsoft/WPF-Samples/tree/master/Graphics 该链接中微软提供了大量的学习Demo&#xff0c;WPF图形处理最大的区别在于…

纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)

三角形 <div class"box"></div> <style>.box{ width: 0;height: 0;border-top: 50px solid transparent;border-bottom: 50px solid transparent;border-left: 50px solid transparent;border-right: 50px solid red; } </style> 平行四边形…

您的MyFitnessPal帐户几乎肯定已被黑客入侵,请立即更改密码

If you’re one of the millions of the 150 million MyFitnessPal users, bad news: hackers have your email address, your user name, and your hashed password. 如果您是1.5亿MyFitnessPal用户中的数百万用户之一&#xff0c;那么这是个坏消息&#xff1a;黑客拥有您的电…

ios 启用 证书_如何在iOS 10中启用就寝提醒,轻柔的唤醒和睡眠跟踪

ios 启用 证书If you have trouble regularly getting a full night’s sleep, the new Bedtime feature in iOS 10 might just help. Set a wake up time and how many hours of sleep you need, and iOS offers bedtime reminders, more gentle alarms, and basic sleep trac…

struts OGNL表达式

OGNLContext对象有两部分构成 一部分是ROOT&#xff1a;可以放置任何对象作为ROOT 另外一部分Context&#xff1a;必须是Map形式&#xff08;键值对&#xff09; OGNL表达式操作 package cn.future.a_ognl;import java.util.HashMap; import java.util.Map;import ognl.Ognl; i…

制作一个用户头像选择器仿 WeGame

制作一个用户头像选择器仿 WeGameCropAvatar作者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40&#xff1b;Visual Studio 2019;制作一个用户头像选择Canvas为父控件所实现&#xff0c;展示图片使…

网曝南方电网搞末位淘汰和裁员,给各下属单位强制规定辞退率和降岗降级率!...

电网作为垄断性国企&#xff0c;在人们心中一向是好单位的代名词&#xff0c;但最近却有网友曝光南方电网搞末位淘汰和裁员&#xff0c;给各单位下了辞退率和降岗降级率&#xff0c;每个单位都要开除一部分人&#xff0c;或者把一部分人岗级降下来。有南方电网员工马上跑出来辟…

二维数组中的查找

2019独角兽企业重金招聘Python工程师标准>>> 题目 在一个二维数组中&#xff0c;每一行中的数都按照从左到右、从上到下的递增顺序排列。要求输入一个整数&#xff0c;判断数组中是否存在该整数 实现代码 function find($matrix, $rows, $columns, $key) {//TODO 参…

蓝牙追踪_如何使用蓝牙追踪器跟踪您的东西

蓝牙追踪We’ve all done it: you misplace something important and you spend a lot of time (with a lot of stress) backtracking to locate it again. With Bluetooth tracking devices you can make the hunt a lot easier, less stressful, and even avoid losing the t…