C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
参考页面:
http://www.yuanjiaocheng.net/webapi/test-webapi.html
http://www.yuanjiaocheng.net/webapi/web-api-controller.html
http://www.yuanjiaocheng.net/webapi/config-webapi.html
http://www.yuanjiaocheng.net/webapi/web-api-route.html
http://www.yuanjiaocheng.net/webapi/parameter-binding.html
用于永久化对象,什么程序都行,依赖NewtonSoft。用于json序列化和反序列化。
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConfigHandler { public class ConfigHandler<T> where T : class { const string SAVE_PATH = "jsonconfig/"; /// <summary> /// 单例模式 /// </summary> static T config; private ConfigHandler() { } /// <summary> /// 获取保存地址,默认是泛型参数T的类型名称 /// </summary> /// <returns></returns> private static string GetSavePath() { if (!Directory.Exists(SAVE_PATH)) { Directory.CreateDirectory(SAVE_PATH); } return $"{SAVE_PATH}{typeof(T).ToString()}.json"; } /// <summary> /// 保存配置 /// </summary> public static void Save(T _config) { config = _config; string json = JsonConvert.SerializeObject(_config); try { using (var sw = new StreamWriter(GetSavePath())) { sw.WriteAsync(json); } } catch (Exception) { throw; } } /// <summary> /// 获取配置信息 /// </summary> /// <returns></returns> public static T Load() { if (config == null) { string json = ""; try { using (var sr = new StreamReader(GetSavePath())) { json = sr.ReadToEnd(); if (json != "") { config = JsonConvert.DeserializeObject<T>(json); } else { config = null; } } } catch (Exception) { config = null; } } return config; } } }
demo:
using ConfigHandler; using ConsoleApplication1; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { MyConfig config = new MyConfig(); config = new MyConfig(); config.name = "leiming"; config.Age = ; config.Time = DateTime.Now; ConfigHandler<MyConfig>.Save(config); config = ConfigHandler<MyConfig>.Load(); Console.WriteLine(config.ToString()); Console.ReadKey(); } } class MyConfig { public int Hello{get;set;} public string name { get; set; } public int Age { get; set; } public DateTime Time { get; set; } public override string ToString() { return $"Name={name},Age={Age},Time={Time.ToShortDateString()}"; } } }
C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置的更多相关文章
- C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
用于永久化对象,什么程序都行,依赖NewtonSoft.用于json序列化和反序列化. using Newtonsoft.Json; using System; using System.Collec ...
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...
- python对象转化为json串、json串转化为python串
1.1. JSON简介: JavaScript Object Notation(JavaScript对象表示法) JSON是存储和交换文本信息的语法.类似XML JSON比XML更小.更快.更易解析 ...
- JVM总括四-类加载过程、双亲委派模型、对象实例化过程
JVM总括四-类加载过程.双亲委派模型.对象实例化过程 目录:JVM总括:目录 一. 类加载过程 类加载过程就是将.class文件转化为Class对象,类实例化的过程,(User user = new ...
- Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合
Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...
- .NET(C#)中的DataSet、string、DataTable等对象转换成Json
ConvertJson.cs类 using System; using System.Collections.Generic; using System.Text; using System.Data ...
- Newtonsoft.Json 把对象转换成json字符串
var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...
- JSON转换类(二)--List转换成Json、对象集合转换Json等
#region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
随机推荐
- 让姑姑不再划拳 码农也要有原则 : SOLID via C#
“姑娘,别这样.我们是有原则的.” “一个有原则的程序猿是不会写出 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去.” “对,是时候和那些只会滚键盘的麻瓜不同了, ...
- 跟我一起云计算(5)——Shards
什么是sharding Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库 (server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而 ...
- 在 C# 里使用 F# 的 option 变量
在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some.虽然 Option module 里有 i ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理
系列目录 前言 回顾上一节,我们熟悉的了解了消息的请求和响应,这一节我们来建立数据库的表,表的设计蛮复杂 你也可以按自己所分析的情形结构来建表 必须非常熟悉表的结果才能运用这张表,这表表的情形涵盖比较 ...
- 从零开始编写自己的C#框架(25)——网站部署
导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...
- [原] KVM虚拟机网络闪断分析
背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等.但是在出现网络问题的 ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- linux服务器开发一 基础
注:本文仅限交流使用,请务用于商业用途,否则后果自负! Linux 1.Linux介绍 Linux是类Unix计算机操作系统的统称. Linux操作系统的内核的名字也是“Linux”. Linux这个 ...
- required
required,这是HTML5中的一个新属性:这是HTML5中input元素中的一个属性. required译为必须的,在input元素中应用这一属性,就表示这一input元素节点是必填的或者必选的 ...
- 推荐10款超级有趣的HTML5小游戏
HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...