private static Domain GetDomainObject(string domain) { var key = domain ?? NullKey; if (DomainObjectMap.TryGetValue(key, out var domainObj)) { return(domainObj); } try { if (key == NullKey) { domainObj = Domain.GetCurrentDomain(); } else { var context = new DirectoryContext(DirectoryContextType.Domain, domain); domainObj = Domain.GetDomain(context); } DomainObjectMap.TryAdd(key, domainObj); return(domainObj); } catch { DomainObjectMap.TryAdd(key, null); return(domainObj); } }