public static TreeCollectionBuilder RemoveTreeController(this TreeCollectionBuilder collection, Type controllerType) { var type = typeof(TreeCollectionBuilder); // https://github.com/umbraco/Umbraco-CMS/blob/release-8.4.0/src/Umbraco.Web/Trees/TreeCollectionBuilder.cs#L13 var field = type.GetField("_trees", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance); if (field == null) { return(collection); } var trees = (List <Tree>)field.GetValue(collection); if (trees == null) { return(collection); } if (typeof(TreeControllerBase).IsAssignableFrom(controllerType) == false) { throw new ArgumentException($"Type {controllerType} does not inherit from {nameof(TreeControllerBase)}."); } var exists = trees.FirstOrDefault(x => x.TreeControllerType == controllerType); if (exists != null) { trees.Remove(exists); } return(collection); }
public void Remove_Tree_From_Collection_Builder() { var collectionBuilder = new TreeCollectionBuilder(); var treeDefinition = new Tree(0, "test", "test", "test", "test", TreeUse.Main, typeof(LanguageTreeController), false); collectionBuilder.AddTree(treeDefinition); collectionBuilder.RemoveTreeController <LanguageTreeController>(); var collection = collectionBuilder.CreateCollection(null); Assert.AreEqual(0, collection.Count); }
public void Adding_Tree_To_Collection_Builder() { var collectionBuilder = new TreeCollectionBuilder(); var treeDefinition = new Tree(0, "test", "test", "test", "test", TreeUse.Main, typeof(LanguageTreeController), false); collectionBuilder.AddTree(treeDefinition); var collection = collectionBuilder.CreateCollection(null); Assert.AreEqual(1, collection.Count); Assert.AreEqual(treeDefinition, collection.FirstOrDefault()); }
public static TreeCollectionBuilder RemoveTreeController <TController>(this TreeCollectionBuilder collection) where TController : TreeControllerBase { return(RemoveTreeController(collection, typeof(TController))); }