/// <summary> /// Parse a personal identifier. /// Can only parse to <see cref="NationalReserveNumberIdentifier"/>, <see cref="CoordinationNumberIdentifier"/> or <see cref="PersonalNumberIdentifier"/>. /// </summary> /// <param name="value">A string representation of a personal identifier.</param> /// <returns>An instance of <see cref="NationalReserveNumberIdentifier"/>, <see cref="CoordinationNumberIdentifier"/> or <see cref="PersonalNumberIdentifier"/></returns> public static IPersonIdentifier Parse(string value) { var formatter = new DateBasedFormatter(value); IPersonIdentifier identifier = null; if (formatter.Century == 0 || (formatter.Century >= 22 && formatter.Century <= 78 && (formatter.Century - 19) % 3 == 0)) { identifier = new NationalReserveNumberIdentifier(value); } else if (formatter.HaveValidYear() && formatter.IsAllNumeric()) { if (formatter.Day > 31) { identifier = new CoordinationNumberIdentifier(value); } else { identifier = new PersonalNumberIdentifier(value); } } if (identifier == null) { throw new PersonIdentifierFormatException(value, ExceptionMessage.NotAbleToParse); } return(identifier); }
protected void Print(IPersonIdentifier identifier) { string gender = identifier.CanCalculateGender ? identifier.CalculatedGender.ToString() : "[N/A]"; var age = identifier.CanCalculateBirthDate ? identifier.CalculateAge().ToString() : "[N/A]"; Console.WriteLine("{3}: {0} gender:{1} age:{2}", identifier.ToString(PersonIdentifierFormatOption.ForDisplay), gender, age, identifier.GetType().Name); }
private static void Print(IPersonIdentifier id) { var gender = id.CanCalculateGender ? id.CalculatedGender.ToString() : "[N/A]"; var age = id.CanCalculateBirthDate ? id.CalculateAge().ToString() : "[N/A]"; Console.WriteLine("{0}\t\t{1}\t\t{2}", id.ToString(PersonIdentifierFormatOption.ForDisplay), gender, age); }
public static bool TryParse(string value, out IPersonIdentifier identifier) { try { identifier = Parse(value); return(true); } catch (Exception) { identifier = null; return(false); } }
public static bool TryLoad(string oid, string value, out IPersonIdentifier identifier) { try { identifier = Load(oid, value); return(true); } catch (Exception) { identifier = null; return(false); } }