Example #1
0
 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();
 }
Example #2
0
 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);
     }
 }