Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var serialNumber = "20202|5666|00020|31";
- var factory = new SerialParserFactory();
- var parser = factory.GetParser(serialNumber);
- IParsingResult result = parser.ParseSerial(serialNumber);
- public interface ISerialParser
- {
- IParsingResult ParseSerial(string serialNumber);
- }
- public class SerialParserType2: ISerialParser
- {
- public IParsingResult ParseSerial(string serialNumber)
- {
- string[] parts = serialNumber.Split("|".ToCharArray());
- int[] fields = new int[parts.Length-2];
- for (int partIndex = 0; partIndex < parts.Length-1; partIndex++)
- {
- int value = 0;
- if (!int.TryParse(parts[partIndex], out value))
- {
- value = 0;
- }
- fields[partIndex] = value;
- }
- int checkSum = 0;
- if (!int.TryParse(parts[parts.Length-1], out checkSum))
- {
- checkSum = 0;
- }
- return new Type2Result
- {
- Fields = fields,
- CheckSum = checkSum
- };
- }
- }
- public class Type2Result: IParsingResult
- {
- public int[] Fields { get; set; }
- public int CheckSum { get; set; }
- }
- public class SerialParserFactory
- {
- public ISerialParser GetParser(string serialNumber)
- {
- string typeChar = serialNumber.Substring(0, 1);
- switch (typeChar)
- {
- case "2":
- return new SerialParserType2();
- }
- return new NotFoundParser();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement