参考页面:
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()}"; } }}