Exemple #1
0
        /// <summary>
        /// Adds scope to a node.
        /// </summary>
        /// <param name="nodesBuilder">Nodes builder of a parent node.</param>
        /// <param name="name">Scope should be named.</param>
        /// <param name="importFilter">Import filter. Controls which registrations of parent node are visible for current node.</param>
        /// <param name="exportToParentFilter">
        /// Export to parent filter. Controls which registrations of <c>this</c> node will be
        /// visible in parent node.
        /// </param>
        /// <param name="exportFilter">Export to children filter. Controls which registrations of <c>this</c> node.</param>
        /// <param name="nodes">Action that builds children <c>nodes</c>.</param>
        /// <returns>Fluent syntax continuation.</returns>
        public static IIxBuilder <ICollection <IIxProviderNodeConfig> > AddScope(
            this IIxBuilder <ICollection <IIxProviderNodeConfig> > nodesBuilder,
            string name = null,
            IIxVisibilityFilterConfig importFilter         = null,
            IIxVisibilityFilterConfig exportToParentFilter = null,
            IIxVisibilityFilterConfig exportFilter         = null,
            Action <IIxBuilder <ICollection <IIxProviderNodeConfig> > > nodes = null)
        {
            if (nodesBuilder == null)
            {
                throw new ArgumentNullException(nameof(nodesBuilder));
            }

            var scopeConfig = new IxScopeConfig
            {
                Identifier           = new IxIdentifier(typeof(IxScope), name),
                ExportToParentFilter = exportToParentFilter,
                ExportFilter         = exportFilter,
                ImportFilter         = importFilter
            };

            nodesBuilder.Config.Add(scopeConfig);
            nodes?.Invoke(
                new IxBuilder <ICollection <IIxProviderNodeConfig> >
            {
                Config = scopeConfig.Nodes
            });

            return(nodesBuilder);
        }
Exemple #2
0
 public IxScope(
     IxHost host,
     [CanBeNull] IxProviderNode parentNode,
     IxScopeConfig config,
     IxVisibilityFilter exportFilter,
     IxVisibilityFilter exportToParentFilter,
     IxVisibilityFilter importFilter)
     : base(
         host,
         parentNode,
         config,
         null,
         exportFilter,
         exportToParentFilter,
         importFilter,
         host.ScopeBinderBuilder.Delegate(new IxRegistrationScopeBindingConfig()),
         false,
         obj => TaskEx.CompletedTask)
 {
     // Adding self provided as default for children.
     VisibleNodes.Add(new IxIdentifier(Identifier.Type), new IxResolvePath(this, new IxProviderNode[] { }));
 }