public Base36IdGenerator(int numTimestampCharacters = 11, int numServerCharacters = 4, int numRandomCharacters = 5, string reservedValue = "", string delimiter = "-", int[] delimiterPositions = null)
{
// throw if any argument would cause out-of-range exceptions
ValidateConstructorArguments(numTimestampCharacters, numServerCharacters, numRandomCharacters);
this._numTimestampCharacters = numTimestampCharacters;
this._numServerCharacters = numServerCharacters;
this._numRandomCharacters = numRandomCharacters;
this._reservedValue = reservedValue;
this._delimiter = delimiter;
this._delimiterPositions = delimiterPositions;
this._maxRandom = (long)Math.Pow(36d, numRandomCharacters);
_hostHash = ComputeHostHash();
Debug.WriteLine("Instance constructor fired");
string appSettingValue = null;
if (ConfigurationManager.AppSettings.HasKeys()
&& ConfigurationManager.AppSettings.AllKeys.Any(s => s.Equals("base36IdInceptionDate", StringComparison.OrdinalIgnoreCase))
&& !string.IsNullOrWhiteSpace((appSettingValue = ConfigurationManager.AppSettings["base36IdInceptionDate"]) ?? ""))
{
DateTime inService;
if (DateTime.TryParse(appSettingValue, out inService))
_epoch = inService;
}
InitStaticMicroseconds();
}