[WPF]xml序列化以及反序列化数据

代码

 

XML序列化工具类 

 public static class XMLHelper{/// <summary>/// 将对象序列化为指定的文件名/// </summary>/// <typeparam name="T"></typeparam>/// <param name="obj"></param>/// <param name="fileName"></param>/// <returns></returns>public static bool SaveObjAsXml<T>(T obj,string fileName){var dir = Application.StartupPath;try{FileStream fs = new FileStream(dir+"/"+fileName, FileMode.Create);XmlSerializer xs = new XmlSerializer(typeof(T));xs.Serialize(fs, obj);fs.Close();return true;}catch (Exception e){Console.WriteLine(e);throw;}}/// <summary>/// 将xml文件进行反序列化/// </summary>/// <typeparam name="T"></typeparam>/// <param name="fileName"></param>/// <returns></returns>public static T DecodeXML<T>(string fileName){var dir = Application.StartupPath;fileName = dir + "/" + fileName;try{if (File.Exists(fileName)==false)return default(T);FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);XmlSerializer xs = new XmlSerializer(typeof(T));T obj = (T)xs.Deserialize(fs);return obj;}catch(Exception ex){Console.WriteLine(ex.Message);throw;}}}

 对应的窗体数据类可以定义为:

[XmlRoot]public class WindowsData:PropertyChangedBase{[XmlElement("WindowsIndex")]/// <summary>/// Windows窗体索引/// </summary>public int WindowsIndex{get;set; }[XmlElement("FontSize")]private double fontSize=14;/// <summary>/// 窗体字体/// </summary>public double FontSize{get { return fontSize;}set{fontSize=value;OnPropertyChanged("FontSize");}}private Point startUpPosition;[XmlElement("LeftTopWinPosition")]public Point StartUpPosition{get { return startUpPosition; }set{startUpPosition = value;OnPropertyChanged("StartUpPosition");}}/// <summary>/// 窗体宽度/// </summary>private int windowsWidth;public int WindowsWidth{get { return windowsWidth; }set { windowsWidth = value;OnPropertyChanged("WindowsWidth"); }}private int windowsHeight;public int WindowsHeight{get { return windowsHeight; }set{windowsHeight = value;OnPropertyChanged("WindowsHeight");}}private string richTextBoxContent;[XmlElement("UserInputNotes")]public string RichTextBoxContent{get { return richTextBoxContent; }set{richTextBoxContent = value;OnPropertyChanged("RichTextBoxContent");}}public WindowsData(){
//            MessageBox.Show("新的窗体数据加载了");WindowsIndex = GenerateWindowsIndex.Generate();WindowsWidth = 350;WindowsHeight = 450;double screenHeight = SystemParameters.FullPrimaryScreenHeight;double screenWidth = SystemParameters.FullPrimaryScreenWidth;StartUpPosition =new Point((screenWidth - WindowsWidth)/2,(screenHeight - WindowsHeight)/2);}}

 

转载于:https://www.cnblogs.com/lizhenghao126/p/11053590.html

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

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

相关文章

多线程的那点儿事

1. 多线程的那点儿事&#xff08;基础篇&#xff09; 多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程&#xff0c;这就要牵涉到多进程&#xff1f;当然&#xff0c;要了解到多进程&#xff0c;就要涉及到操作系统。不过大家也不要紧张&#xff0c;听我慢慢道来。…

Android应用开发—AsyncTask

摘录自 Android 多线程—–AsyncTask详解 AsyncTask AsyncTask&#xff1a;异步任务&#xff0c;从字面上来说&#xff0c;就是在我们的UI主线程运行的时候&#xff0c;异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当…

std::shared_ptr之deleter的巧妙应用

本文由作者邹启文授权网易云社区发布。std::shared_ptr一次创建&#xff0c;多处共享&#xff0c;通过引用计数控制生命周期。 实例 在邮箱大师PC版中&#xff0c;我们在实现搜索时&#xff0c;大致思路是这样的&#xff1a; 每一个账号都有一个SearchFlow&#xff0c;搜索开始…

js - 执行上下文和作用域以及闭包

首先&#xff0c;咱们通常被"执行上下文"&#xff0c;"执行上下文环境"&#xff0c;"上下文环境"&#xff0c;"执行上下文栈"这些名词搞混。那我们一一来揭秘这些名字的含义。 这一块一直比较晦涩难懂&#xff0c;还是需要仔细去斟酌斟…

Spring之JDBCTemplate

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、Spring对不同的持久化支持&#xff1a; Spring为各种支持的持久化技术&#xff0c;都提供了简单操作的模板和回调 ORM持久化技术模…

从蚂蚁金服实践入手,带你深入了解 Service Mesh

本文整理自蚂蚁金服高级技术专家敖小剑在 QCon 上海 2018 上的演讲。我是来自蚂蚁金服中间件团队的敖小剑&#xff0c;目前是蚂蚁金服 Service Mesh 项目的 PD。我同时也是 Servicemesher 中国技术社区的创始人&#xff0c;是 Service Mesh 技术在国内最早的布道师。我今天给大…

Android应用开发—FragmentManager如何管理fragments

本文主要摘录自Android中使用FragmentManager管理fragments 和 浅谈FragmentManager与fragment之一二事 先讲下自己对fragment的理解&#xff1a; 对于fragment&#xff0c;有太多官方文档和博文来介绍&#xff0c;此处不做转述&#xff1a;我感觉android提供fragment这种组件…

数组指针 和 指针数组

最近发现公司有些人说怎样区分 数组指针 和 指针数组 &#xff1f; 其实 很简单&#xff1b; 数组指针&#xff0c; 先是&#xff08;定语 &#xff09; &#xff08;主体&#xff09;&#xff0c; &#xff08;定语 数组&#xff09; &#xff08;主体 指针&#xff09…

在云服务器上注意GeoServer和ShadowDataMap的跨域设置

在云服务器上注意GeoServer和ShadowDataMap的跨域设置 1、对于支持cors的网络资源 可以在ShadowDataMap的devserverconfig.json里设置相应的跨域资源 提示&#xff1a;geoserver发布的地图服务虽然同在一个服务器上&#xff0c;但是端口不一样&#xff0c;同样需要设置跨域 如&…

Guava ImmutableCollection简介

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 ImmutableCollection代码定义 GwtCompatible(emulatedtrue) public abstract class ImmutableCollection<E> extends AbstractCo…

Todo List

fragment里面如何处理back按键事件。 fragment里面无法Override onBackPressed接口&#xff0c;如何优雅的处理back press事件&#xff1f;activity如何获取当前活跃的fragment对象。异步网络请求如何改造成rxjava&#xff0c;rxjava有设置运行线程的能力&#xff0c;异步请求…

常见的几种负载均衡算法

1、轮询将所有请求&#xff0c;依次分发到每台服务器上&#xff0c;适合服务器硬件相同的场景。优点&#xff1a;服务器请求数目相同&#xff1b; 缺点&#xff1a;服务器压力不一样&#xff0c;不适合服务器配置不同的情况&#xff1b; 2、随机请求随机分配到各台服务器上。优…

基于 Token 的身份验证方法

基于 Token 的身份验证方法 使用基于 Token 的身份验证方法&#xff0c;在服务端不需要存储用户的登录记录。大概的流程是这样的&#xff1a;客户端使用用户名跟密码请求登录 服务端收到请求&#xff0c;去验证用户名与密码 验证成功后&#xff0c;服务端会签发一个 Token&…

Android应用开发-图片加载库Glide

Glide Picasso和Glide之间的区别&#xff1a; Picasso 仅仅缓存了全尺寸的图像&#xff1b;然而 Glide 缓存了原始图像&#xff0c;全分辨率图像和另外小版本的图像。

excel 表格导入 - java 实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; imp…

C语言 API

MySQL的C语言API接口 1、首先当然是连接数据库&#xff0c;函数原型如下&#xff1a; MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned…

线程组之间的JMeter传递变量

下面&#xff0c;我们将看看如何在线程组之间共享和传递变量。在开发高级JMeter脚本时&#xff0c;很可能您将拥有多个线程组。每个线程组将执行不同的请求。一个很好的例子是我们需要使用Bearer Tokens对用户进行身份验证。一个线程组执行身份验证并保存令牌。另一个线程组需要…

python第九天(9-33)

一&#xff1a;进程 进程概念 进程就是一个程序运行在一个数据集上的一次动态执行过程进程一般由程序&#xff0c;数据集&#xff0c;进程控制块组成进程控制块&#xff1a; 进程控制块用来记录进程的外部特征&#xff0c;描述进程的执行变化过程&#xff0c;系统可以利用它来控…

Android Studio出现Failed to open zip file. Gradle's dependency cache may be corrupt问题的解决

删除了/Users/tycao/.gradle/wrapper/dists目录下对应的gradle-X.X-all目录重新sync了

双机热备份和负载均衡的区别

1、双机热备相当于2台服务器其中有一台是另一台的备机&#xff0c;也可以互为备机&#xff1b;而且这两台主机的数据时实时同步的&#xff1b;主机在运行服务时&#xff0c;备机处于检测状态&#xff0c;主机发生故障后&#xff0c;备机将接管主机的服务。2、负载均衡是在这2台…