/// <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); }
/// <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); }