/// <summary> /// Removes the <see cref="ISearchItem{TKey}"/>. /// </summary> /// <param name="item">The item to remove.</param> /// <returns><see langword="true"/>, if <paramref name="item"/> was removed. <see langword="false"/>, if <paramref name="item"/> was not found.</returns> public static bool RemoveCommand(ISearchItem <string> item) { var assembly = Assembly.GetCallingAssembly(); string assemblyName = assembly?.GetName()?.Name ?? "Null"; assemblyName = assemblyName.Replace("_", " "); var sourceName = "___UNNAMEDITEMSOURCE___"; var combined = $"{assemblyName}_{sourceName}"; if (searchItemSources.TryGetValue(combined, out var existing)) { ExternalCommandItemSource source = (ExternalCommandItemSource)existing; var key = source.entries.Where(e => e.Value == item).Select(e => e.Key).FirstOrDefault(); if (key != null) { source.entries.Remove(key); return(true); } if (source.entries.Count == 0) { searchItemSources.TryRemove(combined, out var _); } } return(false); }
private static ExternalCommandItemSource GetOrCreateSource(string assemblyName) { var sourceName = "___UNNAMEDITEMSOURCE___"; var combined = $"{assemblyName}_{sourceName}"; ExternalCommandItemSource source; if (searchItemSources.TryGetValue(combined, out var existing)) { source = (ExternalCommandItemSource)existing; } else { source = new ExternalCommandItemSource(); searchItemSources.TryAdd(combined, source); } return(source); }