Пример #1
0
        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());
        }
Пример #4
0
 public static TreeCollectionBuilder RemoveTreeController <TController>(this TreeCollectionBuilder collection)
     where TController : TreeControllerBase
 {
     return(RemoveTreeController(collection, typeof(TController)));
 }