public bool IsTracingEnabled(T identity)
        {
            ExTraceConfiguration instance = ExTraceConfiguration.Instance;

            if (!instance.PerThreadTracingConfigured)
            {
                return(false);
            }
            if (this.traceEnabledFields == null || this.tracingConfigVersion < instance.Version)
            {
                lock (this)
                {
                    if (this.traceEnabledFields == null || this.tracingConfigVersion < instance.Version)
                    {
                        this.traceEnabledFields   = this.LoadEnabledIdentities(instance);
                        this.tracingConfigVersion = instance.Version;
                    }
                }
            }
            return(this.traceEnabledFields.Contains(identity));
        }
        protected override HashSet <string> LoadEnabledIdentities(ExTraceConfiguration currentInstance)
        {
            HashSet <string> hashSet = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
            List <string>    list;

            if (currentInstance.CustomParameters.TryGetValue("UserDN", out list))
            {
                for (int i = 0; i < list.Count; i++)
                {
                    hashSet.Add(list[i]);
                }
            }
            if (currentInstance.CustomParameters.TryGetValue("WindowsIdentity", out list))
            {
                for (int j = 0; j < list.Count; j++)
                {
                    hashSet.Add(list[j]);
                }
            }
            return(hashSet);
        }
 protected abstract HashSet <T> LoadEnabledIdentities(ExTraceConfiguration currentInstance);