Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Xml.Serialization;
  4.  
  5. namespace ConsoleApp1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. //string directory = Path.Combine(
  12. // Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ProgramName");
  13. string directory = Path.Combine("D:\", "ProgramName");
  14. string file = Path.Combine(directory, "data.xml");
  15.  
  16. Data data = new Data
  17. {
  18. Amount = 150m
  19. };
  20.  
  21. Display(data, "Исходный вариант");
  22. try
  23. {
  24. if (!Directory.Exists(directory))
  25. {
  26. Directory.CreateDirectory(directory);
  27. }
  28. Serializer.SaveToXml(file, data);
  29. }
  30. catch (Exception ex)
  31. {
  32. Console.WriteLine(ex);
  33. }
  34.  
  35. // Как будто читаем где-то в другом месте программы и не сразу же после записи
  36. // -----------------------------
  37. try
  38. {
  39. Data fromFile = null;
  40. if (File.Exists(file))
  41. {
  42. fromFile = Serializer.LoadXml<Data>(file);
  43. }
  44. else
  45. {
  46. fromFile = new Data();
  47. }
  48.  
  49. Display(fromFile, "Прочитанный из файла");
  50. }
  51. catch (Exception ex)
  52. {
  53. Console.WriteLine(ex);
  54. }
  55.  
  56. Console.ReadKey();
  57. }
  58.  
  59. private static void Display(Data data, string message)
  60. {
  61. Console.WriteLine(message + ". Amount: {0}", data.Amount);
  62. }
  63. }
  64.  
  65. public class Data
  66. {
  67. public decimal Amount { get; set; }
  68. }
  69.  
  70. public static class Serializer
  71. {
  72. public static void SaveToXml<T>(String fileName, T serializableObject)
  73. {
  74. XmlSerializer serializer = new XmlSerializer(typeof(T));
  75. using (TextWriter textWriter = new StreamWriter(fileName))
  76. {
  77. serializer.Serialize(textWriter, serializableObject);
  78. }
  79. }
  80.  
  81. public static T LoadXml<T>(String fileName)
  82. {
  83. XmlSerializer serializer = new XmlSerializer(typeof(T));
  84. using (TextReader textReader = new StreamReader(fileName))
  85. {
  86. return (T)serializer.Deserialize(textReader);
  87. }
  88. }
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement