public static void AddPreferencesRenderer(List <string> names, IPreferencesRenderer renderer) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } if (names == null || !names.Any()) { throw new ArgumentNullException(nameof(names)); } lock (_preferencesRendersLock) { foreach (var name in names) { var ignoreCaseName = name.ToLowerInvariant(); if (!_preferencesRenders.ContainsKey(ignoreCaseName)) { _preferencesRenders.Add(ignoreCaseName, renderer); } } if (names.All(name => string.Compare(name, renderer.Name, StringComparison.OrdinalIgnoreCase) != 0)) { var ignoreCaseName = renderer.Name.ToLowerInvariant(); if (!_preferencesRenders.ContainsKey(ignoreCaseName)) { _preferencesRenders.Add(ignoreCaseName, renderer); } } } }
public static void AddPreferencesRenderer(IPreferencesRenderer renderer) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } var ignoreCaseName = renderer.Name.ToLowerInvariant(); // ReSharper disable once InconsistentlySynchronizedField if (!_preferencesRenders.ContainsKey(ignoreCaseName)) { lock (_preferencesRendersLock) { if (!_preferencesRenders.ContainsKey(ignoreCaseName)) { _preferencesRenders.Add(ignoreCaseName, renderer); } } } }