Guest User

Untitled

a guest
Dec 19th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.44 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Ticket>
  3. <Age>70254</Age>
  4. <ArchiveFlag>вне архива</ArchiveFlag>
  5. <State>В работе</State>
  6. <StateID>6</StateID>
  7. <StateType>Таймер</StateType>
  8. <TicketID>7</TicketID>
  9. <TicketNumber>2018121710000019</TicketNumber>
  10. <Title>Название</Title>
  11. <Type>Билет на продажу</Type>
  12. <TypeID>1</TypeID>
  13. </Ticket>
  14.  
  15. [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
  16. [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
  17. public partial class Ticket
  18. {
  19. public ulong Age { get; set; }
  20. public string ArchiveFlag { get; set; }
  21. public string State { get; set; }
  22. public uint StateID { get; set; }
  23. public string StateType { get; set; }
  24. public ulong TicketID { get; set; }
  25. public string TicketNumber { get; set; }
  26. public string Title { get; set; }
  27. public string Type { get; set; }
  28. public uint TypeID { get; set; }
  29.  
  30. }
  31.  
  32. public partial class StateModel
  33. {
  34. public string State { get; set; }
  35. public uint StateID { get; set; }
  36. public string StateType { get; set; }
  37. }
  38.  
  39. [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
  40. [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
  41. public partial class Ticket
  42. {
  43. public ulong Age { get; set; }
  44. public string ArchiveFlag { get; set; }
  45. public StateModel State { get; set; }
  46. public ulong TicketID { get; set; }
  47. public string TicketNumber { get; set; }
  48. public string Title { get; set; }
  49. public string Type { get; set; }
  50. public uint TypeID { get; set; }
  51.  
  52. }
  53.  
  54. var node =@"<?xml version="1.0" encoding="UTF-8"?>
  55. <Ticket>
  56. <Age>70254</Age>
  57. <ArchiveFlag>вне архива</ArchiveFlag>
  58. <State>В работе</State>
  59. <StateID>6</StateID>
  60. <StateType>Таймер</StateType>
  61. <TicketID>7</TicketID>
  62. <TicketNumber>2018121710000019</TicketNumber>
  63. <Title>Название</Title>
  64. <Type>Билет на продажу</Type>
  65. <TypeID>1</TypeID>
  66. </Ticket>";
  67. Ticket res;
  68. using (TextReader reader = new StringReader(node))
  69. {
  70. var serializer = new XmlSerializer(typeof(Ticket));
  71. res = (Ticket)serializer.Deserialize(reader);
  72. Console.WriteLine($"Статус|{res.State.State}|");
  73. }
  74.  
  75. public class State:IState
  76. {
  77. // имплементация полей интерфейса IState
  78. }
  79.  
  80. public class NewTiket:ITicket
  81. {
  82. // имплементация полей интерфейса ITicket
  83. //...
  84.  
  85. public State State {get;set;}
  86. }
  87.  
  88. public static class ObjectExtention
  89. {
  90. public static void CopyPropertiesFrom<T>(this T source, T target)
  91. {
  92. foreach (var info in typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public))
  93. info.SetValue(source, info.GetValue(target, null), null);
  94. }
  95. }
  96.  
  97. var result = new NewTiket();
  98. // копируем поля интерфейса ITicket
  99. ((ITicket)result).CopyPropertiesFrom(xmlTiket);
  100.  
  101. result.State = new State();
  102. // копируем поля интерфейса IState
  103. ((IState)result.State).CopyPropertiesFrom(xmlTiket);
  104.  
  105. NewTiket newTiket = xmlTiket;
  106.  
  107. public partial class StateModel
  108. {
  109. public string State { get; set; }
  110. public uint StateID { get; set; }
  111. public string StateType { get; set; }
  112. }
  113.  
  114. [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
  115. [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
  116. public partial class Ticket:StateModel
  117. {
  118. public ulong Age { get; set; }
  119. public string ArchiveFlag { get; set; }
  120. public ulong TicketID { get; set; }
  121. public string TicketNumber { get; set; }
  122. public string Title { get; set; }
  123. public string Type { get; set; }
  124. public uint TypeID { get; set; }
  125.  
  126. }
  127.  
  128. interface IAge
  129. {
  130. ulong Age { get; set; }
  131. ulong AgeTimeUnix { get; set; }
  132. string ArchiveFlag { get; set; }
  133. }
  134.  
  135. public partial class TicketAge:IAge
  136. {
  137. public ulong Age { get; set; }
  138.  
  139. public ulong AgeTimeUnix
  140. {
  141. get
  142. {
  143. throw new NotImplementedException();
  144. }
  145.  
  146. set
  147. {
  148. throw new NotImplementedException();
  149. }
  150. }
  151. public string ArchiveFlag { get; set; }
  152. }
  153.  
  154. interface IState
  155. {
  156. string State { get; set; }
  157. uint StateID { get; set; }
  158. string StateType { get; set; }
  159. }
  160.  
  161. public partial class TicketState:TicketAge,IState
  162. {
  163. public string State { get; set; }
  164. public uint StateID { get; set; }
  165. public string StateType { get; set; }
  166. }
  167.  
  168. interface ITicket
  169. {
  170. ulong TicketID { get; set; }
  171. string TicketNumber { get; set; }
  172. string Title { get; set; }
  173. string Type { get; set; }
  174. uint TypeID { get; set; }
  175. }
  176.  
  177. [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
  178. [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
  179. public partial class Ticket:TicketState, ITicket
  180. {
  181. public ulong TicketID { get; set; }
  182. public string TicketNumber { get; set; }
  183. public string Title { get; set; }
  184. public string Type { get; set; }
  185. public uint TypeID { get; set; }
  186.  
  187. }
Add Comment
Please, Sign In to add comment