/// <summary> /// Initializes a new instance of the <see cref="IxSingletonProvider"/> class. /// </summary> /// <param name="host">IndirectX host.</param> public IxSingletonProvider( IxHost host, IxProviderNode parentNode, IxStdProviderConfig config, IxInstanceFactory instanceFactory, IxVisibilityFilter exportFilter, IxVisibilityFilter exportToParentFilter, IxVisibilityFilter importFilter, IxScopeBinderDelegate scopeBinder) : base( host, parentNode, config, instanceFactory, exportFilter, exportToParentFilter, importFilter, scopeBinder, config.AutoDisposeEnabled, config.DisposeHandler) { if (parentNode == null) { throw new ArgumentNullException(nameof(parentNode)); } if (instanceFactory == null) { throw new ArgumentNullException(nameof(instanceFactory)); } // Adding self provided as default for children. VisibleNodes.Add(new IxIdentifier(Identifier.Type), new IxResolvePath(this, new IxProviderNode[] { })); }
public IxResolver( IxHost host, IIxInstance ownerInstance, [CanBeNull] IxResolveContext parentContext, [CanBeNull] IxResolveFrame parentFrame) { if (host == null) { throw new ArgumentNullException(nameof(host)); } if (ownerInstance == null) { throw new ArgumentNullException(nameof(ownerInstance)); } if (parentFrame != null) { if (parentContext == null) { throw new ArgumentNullException(); } } Host = host; OwnerInstance = ownerInstance; ParentFrame = parentFrame; ParentContext = parentContext; }
/// <inheritdoc/> public async ValueTask <IIxHost> Build() { var host = new IxHost(); await host.Initialize(Config); return(host); }
public IxPerResolveProvider( IxHost host, [CanBeNull] IxProviderNode parentNode, IxProviderNodeConfig config, [CanBeNull] IxInstanceFactory instanceFactory, IxVisibilityFilter exportFilter, IxVisibilityFilter exportToParentFilter, IxVisibilityFilter importFilter, IxScopeBinderDelegate scopeBinder, bool autoDisposeEnabled, IxDisposeHandlerDelegate disposeHandler) : base( host, parentNode, config, instanceFactory, exportFilter, exportToParentFilter, importFilter, scopeBinder, autoDisposeEnabled, disposeHandler) { VxArgs.NotNull(parentNode, nameof(parentNode)); VxArgs.NotNull(instanceFactory, nameof(instanceFactory)); // Adding self provided as default for children. VisibleNodes.Add(new IxIdentifier(Identifier.Type), new IxResolvePath(this, new IxProviderNode[] { })); }
/// <summary> /// Initializes a new instance of the <see cref="IxArgumentProvider"/> class. /// </summary> /// <param name="host">IndirectX host.</param> public IxArgumentProvider(IxHost host) : base( host, null, new IxStdProviderConfig { Identifier = new IxIdentifier(typeof(object)), }, null, identifier => true, identifier => true, identifier => true, async(a, b, c, d, e) => { Critical.Assert(false, "Not supported."); return(null); }, false, obj => TaskEx.CompletedTask) { }
public IxTransientScope( IxHost host, IxProviderNode parentNode, IxProviderNodeConfig config, IxInstanceFactory instanceFactory, IxVisibilityFilter exportFilter, IxVisibilityFilter exportToParentFilter, IxVisibilityFilter importFilter) : base( host, parentNode, config, instanceFactory, exportFilter, exportToParentFilter, importFilter, (a, b, c, d, e) => { throw new NotImplementedException(); }, false, obj => TaskEx.CompletedTask) { }
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[] { })); }
public IxProviderNode( IxHost host, [CanBeNull] IxProviderNode parentNode, IxProviderNodeConfig config, [CanBeNull] IxInstanceFactory instanceFactory, IxVisibilityFilter exportFilter, IxVisibilityFilter exportToParentFilter, IxVisibilityFilter importFilter, IxScopeBinderDelegate scopeBinder, bool autoDisposeEnabled, IxDisposeHandlerDelegate disposeHandler) { if (host == null) { throw new ArgumentNullException(nameof(host)); } if (exportFilter == null) { throw new ArgumentNullException(nameof(exportFilter)); } if (exportToParentFilter == null) { throw new ArgumentNullException(nameof(exportToParentFilter)); } if (importFilter == null) { throw new ArgumentNullException(nameof(importFilter)); } if (scopeBinder == null) { throw new ArgumentNullException(nameof(scopeBinder)); } if (disposeHandler == null) { throw new ArgumentNullException(nameof(disposeHandler)); } _nodes = new List <IxProviderNode>(); _nodesById = new Dictionary <IxIdentifier, IxProviderNode>(); Host = host; ParentNode = parentNode; if (config.Identifier == null) { // ReSharper disable once NotResolvedInText throw new ArgumentNullException("config.Identifier"); } Identifier = (IxIdentifier)config.Identifier; InstanceFactory = instanceFactory; ExportFilter = exportFilter; ExportToParentFilter = exportToParentFilter; ImportFilter = importFilter; ScopeBinder = scopeBinder; AutoDisposeEnabled = autoDisposeEnabled; DisposeHandler = disposeHandler; ParentNode?.RegisterChild(this); }