C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置

2017-01-07 19:01:59来源:cnblogs.com作者:liubibi人点击

参考页面:

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序列化和反序列化。
 1 using Newtonsoft.Json; 2 using System; 3 using System.Collections.Generic; 4 using System.IO; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8  9 namespace ConfigHandler10 {11     public class ConfigHandler<T>12         where T : class13     {14         const string SAVE_PATH = "jsonconfig/";15         /// <summary>16         /// 单例模式17         /// </summary>18         static T config;19         private ConfigHandler()20         {21 22         }23         /// <summary>24         /// 获取保存地址,默认是泛型参数T的类型名称25         /// </summary>26         /// <returns></returns>27         private static string GetSavePath()28         {29             if (!Directory.Exists(SAVE_PATH))30             {31                 Directory.CreateDirectory(SAVE_PATH);32             }33             return $"{SAVE_PATH}{typeof(T).ToString()}.json";34         }35         /// <summary>36         /// 保存配置37         /// </summary>38         public static void Save(T _config)39         {40             config = _config;41             string json = JsonConvert.SerializeObject(_config);42             try43             {44                 using (var sw = new StreamWriter(GetSavePath()))45                 {46                     sw.WriteAsync(json);47                 }48 49             }50             catch (Exception)51             {52                 throw;53             }54         }55         /// <summary>56         /// 获取配置信息57         /// </summary>58         /// <returns></returns>59         public static T Load()60         {61             if (config == null)62             {63                 string json = "";64                 try65                 {66                     using (var sr = new StreamReader(GetSavePath()))67                     {68                         json = sr.ReadToEnd();69                         if (json != "")70                         {71                             config = JsonConvert.DeserializeObject<T>(json);72                         }73                         else74                         {75                             config = null;76                         }77                     }78                 }79                 catch (Exception)80                 {81                     config = null;82                 }83             }84             return config;85         }86 87     }88 89 90 }

 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 = 20;            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()}";        }    }}

 

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台