public void RegisterCollection(ICommandBag bag) { if (baggedCommands.Contains(bag)) { throw new InvalidOperationException("This bag is already loaded."); } CheckDistinct(bag.BagCommands); baggedCommands.Add(bag); try { foreach (var command in bag.BagCommands) { LoadCommand(command); } RightsManager?.SetRightsList(AllRights); } catch (Exception ex) { Log.Error(ex, "Failed to load command bag."); UnregisterCollection(bag); throw; } }
internal void RegisterCollection(ICommandBag bag) { if (pluginCommands.ContainsKey(bag)) { throw new InvalidOperationException("This bag is already loaded."); } var comList = bag.ExposedCommands.ToList(); CheckDistinct(comList); pluginCommands.Add(bag, comList.AsReadOnly()); int loaded = 0; try { for (; loaded < comList.Count; loaded++) { LoadCommand(comList[loaded]); } } catch // TODO test { for (int i = 0; i <= loaded && i < comList.Count; i++) { UnloadCommand(comList[i]); } throw; } }
public void UnregisterCollection(ICommandBag bag) { if (baggedCommands.Remove(bag)) { foreach (var com in bag.BagCommands) { UnloadCommand(com); } RightsManager?.SetRightsList(AllRights); } }
internal void UnregisterCollection(ICommandBag bag) { if (pluginCommands.TryGetValue(bag, out var commands)) { pluginCommands.Remove(bag); foreach (var com in commands) { UnloadCommand(com); } } }
public void RegisterCollection(ICommandBag bag) { if (baggedCommands.Contains(bag)) { return; } CheckDistinct(bag.BagCommands); baggedCommands.Add(bag); foreach (var command in bag.BagCommands) { var result = LoadCommand(command); if (!result.Ok) { Log.Error("Failed to load command bag: " + result.Error); UnregisterCollection(bag); throw new InvalidOperationException(result.Error); } } rightsManager?.SetRightsList(AllRights); }
public void Add(Identifier commandId, ICommandBag bag) => _bags.Add(commandId, bag);