From cf3d697bc5666f3a369f9bf498575fe6aff32402 Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Mon, 28 Feb 2022 09:36:35 +0100 Subject: [PATCH] Update RemoveTreeController to use TController (#11795) --- .../Trees/TreeCollectionBuilder.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) 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); + } } }