Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. var serialNumber = "20202|5666|00020|31";
  2. var factory = new SerialParserFactory();
  3. var parser = factory.GetParser(serialNumber);
  4. IParsingResult result = parser.ParseSerial(serialNumber);
  5.  
  6. public interface ISerialParser
  7. {
  8. IParsingResult ParseSerial(string serialNumber);
  9. }
  10.  
  11. public class SerialParserType2: ISerialParser
  12. {
  13. public IParsingResult ParseSerial(string serialNumber)
  14. {
  15. string[] parts = serialNumber.Split("|".ToCharArray());
  16.  
  17. int[] fields = new int[parts.Length-2];
  18. for (int partIndex = 0; partIndex < parts.Length-1; partIndex++)
  19. {
  20. int value = 0;
  21. if (!int.TryParse(parts[partIndex], out value))
  22. {
  23. value = 0;
  24. }
  25. fields[partIndex] = value;
  26. }
  27. int checkSum = 0;
  28. if (!int.TryParse(parts[parts.Length-1], out checkSum))
  29. {
  30. checkSum = 0;
  31. }
  32. return new Type2Result
  33. {
  34. Fields = fields,
  35. CheckSum = checkSum
  36. };
  37. }
  38. }
  39.  
  40. public class Type2Result: IParsingResult
  41. {
  42. public int[] Fields { get; set; }
  43. public int CheckSum { get; set; }
  44. }
  45.  
  46. public class SerialParserFactory
  47. {
  48. public ISerialParser GetParser(string serialNumber)
  49. {
  50. string typeChar = serialNumber.Substring(0, 1);
  51. switch (typeChar)
  52. {
  53. case "2":
  54. return new SerialParserType2();
  55. }
  56. return new NotFoundParser();
  57. }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement