static XFullCorrelationId() { __ComponentDelimiterAsString = new string(c : ComponentDelimiter, count : 1); __CacheSpinLock = new PrimitiveSpinLock(); __Cache = new Dictionary <string, XFullCorrelationId>(StringComparer.Ordinal); __UseCache = false; RegexPattern = @"^(([\p{L}\p{Nd}_\-]{1,36}){1}(\.[\p{L}\p{Nd}_\-]{1,36}){0,127})$"; Regex = new Regex(pattern: RegexPattern, options: RegexOptions.Compiled); AppDomain = XCorrelationId.New(); }
static bool P_TryParse(string id, out string validationMessage, out string parsedValue, out XCorrelationId[] parsedComponents) { if (id != null) { if (P_GetFromCache(idString: id, id: out var fromCacheInstance)) { validationMessage = null; parsedValue = fromCacheInstance._value; parsedComponents = fromCacheInstance._components; return(true); } } // if (IsValid(id, out validationMessage)) { var components = id.Split(ComponentDelimiter); if (components.Length > MaxComponentCount) { parsedValue = null; parsedComponents = null; validationMessage = FormatXResource(typeof(string), "TooManyComponents", MaxComponentCount); return(false); } parsedValue = id; parsedComponents = new XCorrelationId[components.Length]; for (var i = 0; i < components.Length; ++i) { parsedComponents[i] = XCorrelationId.CreateUnsafe(idString: components[i]); } return(true); } else { parsedValue = null; parsedComponents = null; return(false); } }