public RegisterAdministrativeEmployeeUserControl(IAfterRegister afterRegister) { InitializeComponent(); _afterRegister = afterRegister; TypeOfUserComboBox.Visibility = Visibility.Hidden; TypeUserText.Text += " Superusuario."; }
public RegisterTicketUserControl(IAfterRegister afterRegister, CloseAction closeAction) : this() { _afterRegister = afterRegister; _closeAction = closeAction; }
/// <summary> /// Ioc容器初始化 /// </summary> /// <param name="config"></param> /// <returns></returns> public IServiceProvider Initialize(IServiceCollection services) { var builder = new ContainerBuilder(); var AssemblyFinder = CurrentDomainAssemblyFinder.Instance; var typeFinder = TypeFinder.Instance; builder.RegisterInstance(AssemblyFinder).As <IAssemblyFinder>().SingleInstance().PropertiesAutowired(); builder.RegisterInstance(typeFinder).As <ITypeFinder>().SingleInstance().PropertiesAutowired(); builder.RegisterInstance(Instance).As <IIocManager>().SingleInstance().PropertiesAutowired(); var listAllType = typeFinder.FindAll(); //找到所有外部IDependencyRegistrar实现,调用注册 var registrarType = typeof(IDependencyRegistrar); var arrRegistrarType = listAllType.Where(t => registrarType.IsAssignableFrom(t) && t != registrarType).ToArray(); var listRegistrarInstances = new List <IDependencyRegistrar>(); foreach (var drType in arrRegistrarType) { listRegistrarInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType)); } //排序 listRegistrarInstances = listRegistrarInstances.OrderBy(t => t.Order).ToList(); foreach (var dependencyRegistrar in listRegistrarInstances) { dependencyRegistrar.Register(builder, typeFinder); } var arrAfterRegistrarType = listAllType.Where(t => typeof(IAfterRegister).IsAssignableFrom(t) && t != typeof(IAfterRegister)).ToArray(); List <IAfterRegister> afterRegisters = new List <IAfterRegister>(); IAfterRegister afterRegister = null; foreach (var item in arrAfterRegistrarType) { afterRegister = (IAfterRegister)Activator.CreateInstance(item); afterRegisters.Add(afterRegister); builder.RegisterInstance(afterRegister).As <IAfterRegister>() .SingleInstance().PropertiesAutowired(); } RegisterExtend.afterRegisters = afterRegisters; //注册ITransientDependency实现类 var dependencyType = typeof(ITransientDependency); //注册ISingletonDependency实现类 var singletonDependencyType = typeof(ISingletonDependency); bool bClassRegister = false, bISingletonRegister = false, bTransientRegister = false; IRegistrationBuilder <object, ScanningActivatorData, DynamicRegistrationStyle> builderRegister = null; foreach (var type in listAllType) { bTransientRegister = dependencyType.IsAssignableFrom(type) && type != dependencyType; bISingletonRegister = singletonDependencyType.IsAssignableFrom(type) && type != singletonDependencyType; if (!bTransientRegister && !bISingletonRegister) { continue; } bClassRegister = type.IsClass && !type.IsAbstract && !type.BaseType.IsInterface && type.BaseType != typeof(object); builderRegister = builder.RegisterTypes(type); if (!bClassRegister) { builderRegister = builderRegister.AsImplementedInterfaces(); } else { builderRegister = builderRegister.As(type.BaseType); } if (bTransientRegister) { builderRegister = builderRegister.InstancePerLifetimeScope(); } else { builderRegister = builderRegister.SingleInstance(); } builderRegister = builderRegister.PropertiesAutowired().OtherRegister(type); } builder.Populate(services); _container = builder.Build(); return(new AutofacServiceProvider(_container)); }