BoC.InversionOfControl.IoC.CreateTask C# (CSharp) Метод

CreateTask() приватный статический Метод

private static CreateTask ( IDependencyResolver dependencyResolver, Type type, IAppDomainHelper appDomainHelpers ) : IContainerInitializer
dependencyResolver IDependencyResolver
type System.Type
appDomainHelpers IAppDomainHelper
Результат IContainerInitializer
        private static IContainerInitializer CreateTask(IDependencyResolver dependencyResolver, Type type, IAppDomainHelper[] appDomainHelpers)
        {
            var constructor = type.GetConstructors().First();
            var parameters = constructor.GetParameters();
            if (!parameters.Any())
                return  Activator.CreateInstance(type) as IContainerInitializer;
            var parameterValues = new object[parameters.Length];
            for (var i=0;i<parameters.Length;i++)
            {
                if (typeof (IDependencyResolver).IsAssignableFrom(parameters[i].ParameterType))
                    parameterValues[i] = dependencyResolver;
                else if (parameters[i].ParameterType == typeof (IAppDomainHelper[]))
                    parameterValues[i] = appDomainHelpers;
                else
                {
                    parameterValues[i] = Activator.CreateInstance(parameters[i].ParameterType);
                }
            }
            return constructor.Invoke(parameterValues) as IContainerInitializer;
        }