Example #1
0
        /// <summary>
        /// Создает классы, конструктор которых принимает параметры явно, а свойства инициализируеются через DI
        /// </summary>
        public object Create <TCreator>(IServiceProvider provider, Type instanceType, object[] parameters) where TCreator : ServiceProviderPropertyCreator
        {
            var creator = new ServiceProviderPropertyCreator(provider, parameters);

            _createdInstances.Add(creator);

            var result = creator.Create(instanceType);

            _createdInstances.Add(result);
            return(result);
        }
Example #2
0
        /// <summary>
        /// Создает классы инициализация которых идет через DI
        /// </summary>
        public object Create <TCreator>(IServiceProvider provider, Type instanceType) where TCreator : SpCreator
        {
            Creator creator;

            if (typeof(TCreator) == typeof(ServiceProviderCreator))
            {
                // создаем экземпляр ServiceProviderCreator, через ClassicCreator

                creator = Create <ClassicCreator, ClassicCreator>(new object[] { provider })
                          .Create <ServiceProviderCreator>();
            }

            creator = new ServiceProviderPropertyCreator(provider, new object[] { });
            _createdInstances.Add(creator);

            var result = creator.Create(instanceType);

            _createdInstances.Add(result);
            return(result);
        }