diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs index 08f6d7b400..05ad0ea8e3 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs @@ -64,15 +64,34 @@ namespace Umbraco.Cms.Web.BackOffice.Trees AddTreeController(controllerType); } - public void RemoveTreeController() => RemoveTreeController(typeof(T)); + public void RemoveTree(Tree treeDefinition) + { + if (treeDefinition == null) + throw new ArgumentNullException(nameof(treeDefinition)); + _trees.Remove(treeDefinition); + } + public void RemoveTreeController() + where TController : TreeControllerBase + => RemoveTreeController(typeof(TController)); + + // TODO: Change parameter name to "controllerType" in a major version to make it consistent with AddTreeController method. public void RemoveTreeController(Type type) { - var tree = _trees.FirstOrDefault(it => it.TreeControllerType == type); + if (!typeof(TreeControllerBase).IsAssignableFrom(type)) + throw new ArgumentException($"Type {type} does not inherit from {typeof(TreeControllerBase).FullName}."); + + var tree = _trees.FirstOrDefault(x => x.TreeControllerType == type); if (tree != null) { _trees.Remove(tree); } } + + public void RemoveTreeControllers(IEnumerable controllerTypes) + { + foreach (var controllerType in controllerTypes) + RemoveTreeController(controllerType); + } } }