コード例 #1
0
        /// <summary>
        /// Adds support for guarding Revit Commands with Guard Conditions.
        /// </summary>
        /// <param name="container">The current container.</param>
        /// <param name="configuration">The configuration to add guard conditions.</param>
        /// <returns>The container.</returns>
        static public IContainer AddRevitCommandGuardConditions(this IContainer container, Action <IConditionCollection> configuration)
        {
            var commandGuardChecker = new RevitCommandGuardChecker();

            container.AddSingleton(commandGuardChecker);
            container.AddSingleton <IRevitCommandGuardChecker>(commandGuardChecker);

            var collection = new ConditionCollection();

            configuration?.Invoke(collection);

            var builders = collection.GetBuilders();

            foreach (var builder in builders)
            {
                var commandTypes = builder.GetCommandTypes();
                var predicate    = builder.GetPredicate();

                foreach (var commandType in commandTypes)
                {
                    commandGuardChecker.AddCommandTypeCondition(commandType, predicate);
                }
            }

            return(container);
        }
コード例 #2
0
        static internal IContainer AddRevitCommandGuardConditions(this IContainer container)
        {
            var commandGuardChecker = new RevitCommandGuardChecker();

            container.AddSingleton(commandGuardChecker);
            container.AddSingleton <IRevitCommandGuardChecker>(commandGuardChecker);

            return(container);
        }