public IFactoryLoader GetLoaderForFactory(Type creationType) { IFactoryLoader loader = null; if (!customFactoryLoaderCache.TryGetValue(creationType, out loader)) { lock(syncLock) { if (!customFactoryLoaderCache.TryGetValue(creationType, out loader)) { var definition = new CustomFactoryDefinition(creationType, this); var builder = new CustomFactoryGenerator(definition); loader = builder.CreateLoader(); customFactoryLoaderCache.Add(creationType, loader); } } } return loader; }