Beispiel #1
0
        private IIocContainer InitializeInternal(IIocKernelBuilder container, Action <IDependencyBuilder> buildDependencies, Action afterBuild)
        {
            lock (this)
            {
                if (_kernel != null)
                {
                    return(_kernel);
                }

                var builder = container.CreateDependencyBuilder();

                builder.BindFunction(ctx => Container).Resolve <IIocContainer>().InSingletonScope();

                buildDependencies?.Invoke(builder);

                builder.Build();

                afterBuild?.Invoke();

                _kernel = container.CreateIocContainer();

                return(_kernel);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Initialize the IOC solution. This must be called for the IOC to work.
 /// </summary>
 /// <param name="container">
 /// Specifiy the kernel container that housed the underlying IOC methodology.
 /// </param>
 /// <param name="buildDependencies">
 /// Specify the build dependency action to invoke, this is where you can add additional
 /// dependencies to the builder.
 /// </param>
 /// <param name="afterBuild">Specify an after build action.</param>
 /// <returns></returns>
 public static IIocContainer Initialize(IIocKernelBuilder container, Action <IDependencyBuilder> buildDependencies, Action afterBuild = null) => Instance.InitializeInternal(container, buildDependencies, afterBuild);