public void Test_KernelRegister12() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = new BasedOnDescriptor(new List <Type> { typeof(AbpDbContext) }, descriptor, Classes.MyFilter); descriptor.Criterias.Add(result); var kernel = new DefaultKernel(); var types = descriptor.GetTypes(kernel).ToList(); foreach (var type in types) { foreach (var criteria in descriptor.Criterias) { try { if (criteria.TryRegister(type, kernel)) { break; } } catch { Console.WriteLine(type.Assembly.FullName + @"---" + type.Name); throw new NullReferenceException("aaa"); } } } }
public void Init() { try { CoreContainer.SetUp(new WindsorContainer()); CoreContainer.Container.Register(Component.For <IIranMarketerDatabase>().ImplementedBy <IranMarketerDatabase>()); CoreContainer.Container.Register(Component.For <ISession>().ImplementedBy <IranMarketerSession>()); FromAssemblyDescriptor fromAssemblyInDirectoryUserManagement = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.UserManagement.dll")); CoreContainer.Container.Register(fromAssemblyInDirectoryUserManagement.BasedOn(typeof(IService <,>)).WithService.DefaultInterfaces()); CoreContainer.Container.Register(fromAssemblyInDirectoryUserManagement.BasedOn(typeof(IRepository <,>)).WithService.AllInterfaces()); CoreContainer.Container.Register(fromAssemblyInDirectoryUserManagement.BasedOn(typeof(BaseMapper <>)).WithServiceBase().WithServiceSelf().LifestyleTransient()); FromAssemblyDescriptor fromAssemblyInDirectoryApi = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.API.dll")); CoreContainer.Container.Register(fromAssemblyInDirectoryApi.BasedOn(typeof(AbstractProvider <, ,>)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); FromAssemblyDescriptor fromAssemblyInDirectoryApiBasic = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.API.dll")); CoreContainer.Container.Register(fromAssemblyInDirectoryApi.BasedOn(typeof(BaseProvider)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); FromAssemblyDescriptor fromAssemblyInDirectorySetting = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.Service.dll")); CoreContainer.Container.Register(fromAssemblyInDirectorySetting.BasedOn(typeof(BaseSettingService)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); } catch (Exception ex) { throw ex; } }
private static IEnumerable <IRegistration> GetRegistrations(FromAssemblyDescriptor fromAssembly) { yield return(fromAssembly .BasedOn(typeof(IHandleQuery <,>)) .WithServiceBase() .LifestyleTransient()); yield return(fromAssembly .BasedOn(typeof(IHandleQueryAsync <,>)) .WithServiceBase() .LifestyleTransient()); yield return(fromAssembly .BasedOn(typeof(IHandleCommand <>)) .WithServiceBase() .LifestyleTransient()); yield return(fromAssembly .BasedOn(typeof(IHandleCommand <,>)) .WithServiceBase() .LifestyleTransient()); yield return(fromAssembly .BasedOn <ISession>() .WithServiceSelf() .LifestyleTransient()); }
public void Test_KernelRegister11() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = new BasedOnDescriptor(new List <Type> { typeof(AbpDbContext) }, descriptor, Classes.MyFilter); descriptor.Criterias.Add(result); var kernel = new DefaultKernel(); foreach (var type in descriptor.GetTypes(kernel)) { foreach (var criteria in descriptor.Criterias) { if (criteria.TryRegister(type, kernel)) { break; } } } }
public void Install(IWindsorContainer container, IConfigurationStore store) { FromAssemblyDescriptor fromAssemblyInDirectory = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.Dao.dll")); container.Register(fromAssemblyInDirectory.BasedOn(typeof(IRepositoryBacic <>)).WithService.AllInterfaces()); container.Register(fromAssemblyInDirectory.BasedOn(typeof(BaseMapper <>)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); container.Register(fromAssemblyInDirectory.BasedOn(typeof(IResultSetMapper <>)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); }
public DefaultHandlerInstaller(FromAssemblyDescriptor descriptor) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } _descriptor = descriptor; }
public static BasedOnDescriptor Register <T>(this FromAssemblyDescriptor descriptor) where T : IDependency { return(descriptor .IncludeNonPublicTypes() .BasedOn <T>() .WithService.Self() .If(type => !type.GetTypeInfo().IsGenericTypeDefinition) .WithService.AllInterfaces()); }
public void Install(IWindsorContainer container, IConfigurationStore store) { FromAssemblyDescriptor fromAssemblyInDirectory = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.Dao.dll")); container.Register(fromAssemblyInDirectory.BasedOn(typeof(IDao <>)).WithService.AllInterfaces()); //container.Register(fromAssemblyInDirectory.BasedOn(typeof(ClassMapping<>)).WithService.Select(new[] { typeof(IEntitySqlsMapper) })); //Base Mappers should not be Singletone because of renaming ColumnPrefix container.Register(fromAssemblyInDirectory.BasedOn(typeof(BaseMapper <>)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); container.Register(fromAssemblyInDirectory.BasedOn(typeof(IResultSetMapper <>)).WithService.DefaultInterfaces()); }
public static void Bootstrap() { if (!bootstrapped) { WindsorContainer = new WindsorContainer(); var assemblFilter = new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")); Descriptor = Classes.FromAssemblyInDirectory(assemblFilter); WindsorContainer.Install(FromAssembly.InDirectory(assemblFilter)); bootstrapped = true; } }
/// <summary> /// Types the implementing interfaces in. /// </summary> /// <param name="descriptor">The descriptor.</param> /// <param name="interfaceNamespace">The interface namespace.</param> /// <returns></returns> public static BasedOnDescriptor TypesImplementingInterfacesIn(this FromAssemblyDescriptor descriptor, string interfaceNamespace) { return(descriptor.Where(delegate(Type type) { IEnumerable <Type> interfaces = from t in type.GetInterfaces() where t.Namespace != null && t.Namespace.StartsWith(interfaceNamespace) select t; return interfaces.Any(); })); }
private void RegisterCommandHandlers(IWindsorContainer container, FromAssemblyDescriptor descriptor) { container.Register(descriptor .BasedOn(typeof(ICommandHandler <>)) .WithServiceAllInterfaces() .WithServiceSelf() .Configure(c => { c.Named($"{c.Implementation.FullName} (fallback)"); c.IsFallback(); }).LifestyleTransient()); }
/// <summary> /// Gets the assembly list. /// </summary> /// <param name="assemblyDescriptor">The assembly descriptor.</param> /// <returns>IList<Assembly>.</returns> private static IEnumerable <Assembly> GetAssemblyList(FromAssemblyDescriptor assemblyDescriptor) { var type = assemblyDescriptor.GetType(); var assemblyField = type.GetField("assemblies", BindingFlags.NonPublic | BindingFlags.Instance); if (assemblyField == null) { return(null); } var enumeration = (IEnumerable <Assembly>)assemblyField.GetValue(assemblyDescriptor); return(enumeration?.ToList()); }
public void Test_KernelRegister9() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = descriptor.BasedOn(new List <Type> { typeof(AbpDbContext) }); var kernel = new DefaultKernel(); ((IRegistration)descriptor).Register(kernel); }
public void Test_KernelRegister13() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = new BasedOnDescriptor(new List <Type> { typeof(AbpDbContext) }, descriptor, Classes.MyFilter); descriptor.Criterias.Add(result); var kernel = new DefaultKernel(); result.TryRegister(typeof(MyDbContext), kernel); }
public void Test_KernelRegister16() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = new BasedOnDescriptor(new List <Type> { typeof(AbpDbContext) }, descriptor, Classes.MyFilter); descriptor.Criterias.Add(result); var kernel = new DefaultKernel(); Type[] baseTypes; var type = typeof(MyDbContext); Assert.IsTrue(result.Accepts(type, out baseTypes)); Assert.AreEqual(baseTypes.Length, 1); var defaults = CastleComponentAttribute.GetDefaultsFor(type); Assert.IsNotNull(defaults); var serviceTypes = result.WithService.GetServices(type, baseTypes); Assert.AreEqual(serviceTypes.Count, 0); Assert.AreEqual(defaults.Services.Length, 1); serviceTypes = defaults.Services; Assert.AreEqual(serviceTypes.ElementAt(0), typeof(MyDbContext)); var registration = Component.For(serviceTypes); registration.ImplementedBy(type); result.Configuration?.Invoke(registration); Assert.IsNull(registration.Name); Assert.IsNull(defaults.Name); registration.RegisterOptionally(); var token = kernel.OptimizeDependencyResolution(); var services = registration.FilterServices(kernel); Assert.AreEqual(services.Length, 1); Assert.AreEqual(services[0], typeof(MyDbContext)); var builder = kernel.ComponentModelBuilder; var customContributors = registration.GetContributors(services); var componentModel = builder.BuildModel(customContributors); token?.Dispose(); }
//variable lari doldurmak için public static void Bootstrap() { if (!bootstrapped) { WindsorContainer = new WindsorContainer(); //bin içindeki dll leri alıyoruz. //ana dizindeki bin klasöründeki dll leri aldık var assemblyFilter = new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")); //filter ile belirtilen dosyadaki bütün class ları doldur Descriptor = Classes.FromAssemblyInDirectory(assemblyFilter); //instal et assembly filter icindeki dll leri WindsorContainer.Install(FromAssembly.InDirectory(assemblyFilter)); bootstrapped = true; } }
public static void RegisterInterfacesFromAssembly <TInterface>( this IWindsorContainer container, FromAssemblyDescriptor assemblyDescriptor = null, LifestyleType lifestyle = DefaultLifestyleType) where TInterface : class { Guard.CheckNotNull(container, "container"); if (assemblyDescriptor == null) { assemblyDescriptor = Classes.FromThisAssembly(); } container.Register(assemblyDescriptor .BasedOn <TInterface>() .WithService.AllInterfaces() .WithService.Self() .Configure(x => x.AddDescriptor(new LifestyleDescriptor <TInterface>(lifestyle)))); }
public void InitIoC() { CoreContainer.Initialize(new BootstrapperSettings(typeof(DoozestanDbContext), ORMFrameWork.EntityFrameWok, Platform.Win)); CoreContainer.Container.Register(Component.For <IConnectionProvider>().ImplementedBy <DefaultDatabaseConnectionProvider>() .Named(DefaultDatabaseConnectionProvider.ConnectionStringName) .LifestylePerThread().IsDefault()); //database CoreContainer.Container.Register(Component.For <CustomDatabase>().ImplementedBy <CustomDatabase>().LifeStyle.Singleton); //common service //FromAssemblyDescriptor fromAssemblyInDirectoryAggregator = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.InternalService.dll")); ////container.Register(fromAssemblyInDirectoryAggregator.BasedOn(typeof(BaseAggregator<>)).WithService.DefaultInterfaces()); //CoreContainer.Container.Install(FromAssembly.InDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.InternalServices.dll"))); //DependencyResolver.SetResolver(new WindsorDependencyResolver(CoreContainer.Container)); FromAssemblyDescriptor fromAssemblyInDirectory = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.InternalService.dll")); CoreContainer.Container.Register(fromAssemblyInDirectory.BasedOn(typeof(IService <>)).WithService.AllInterfaces()); CoreContainer.Container.Install(FromAssembly.InDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.Common.dll"))); FromAssemblyDescriptor fromAssemblyInDirectory2 = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.UserManagement.dll")); CoreContainer.Container.Register(fromAssemblyInDirectory2.BasedOn(typeof(IService <>)).WithService.DefaultInterfaces()); CoreContainer.Container.Register(fromAssemblyInDirectory2.BasedOn(typeof(IDao <>)).WithService.AllInterfaces()); CoreContainer.Container.Register(fromAssemblyInDirectory2.BasedOn(typeof(ClassMapping <>)).WithService.Select(new[] { typeof(IEntitySqlsMapper) })); //Base Mappers should not be Singletone because of renaming ColumnPrefix CoreContainer.Container.Register(fromAssemblyInDirectory2.BasedOn(typeof(BaseMapper <>)).WithService.AllInterfaces().WithServiceBase().WithServiceSelf().LifestyleTransient()); //var assemblyDescriptor = Classes.FromThisAssembly(); //CoreContainer.Container.Register(assemblyDescriptor.BasedOn<IController>().WithServiceSelf().LifestyleTransient()); //ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(CoreContainer.Container.Kernel)); //helpers CoreContainer.Container.Register(Component.For <TransactionHelper>().ImplementedBy <TransactionHelper>()); }
/// <summary> /// Register service based on the service as a service with the same name. /// </summary> /// <typeparam name = "T"></typeparam> /// <param name = "fromAssemblyDescriptor">From assembly descriptor.</param> /// <returns></returns> public static BasedOnDescriptor BasedOnAsService <T>(this FromAssemblyDescriptor fromAssemblyDescriptor) { return(fromAssemblyDescriptor.BasedOnAsService(typeof(T))); }
public void Test_KernelRegister17() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = new FromAssemblyDescriptor(context.Assembly, Classes.MyFilter); var result = new BasedOnDescriptor(new List <Type> { typeof(AbpDbContext) }, descriptor, Classes.MyFilter); descriptor.Criterias.Add(result); var kernel = new DefaultKernel(); Type[] baseTypes; var type = typeof(MyDbContext); Assert.IsTrue(result.Accepts(type, out baseTypes)); Assert.AreEqual(baseTypes.Length, 1); Assert.AreEqual(baseTypes[0].Name, "AbpDbContext"); var defaults = CastleComponentAttribute.GetDefaultsFor(type); Assert.IsNotNull(defaults); var serviceTypes = result.WithService.GetServices(type, baseTypes); Assert.AreEqual(serviceTypes.Count, 0); Assert.AreEqual(defaults.Services.Length, 1); serviceTypes = defaults.Services; Assert.AreEqual(serviceTypes.ElementAt(0), typeof(MyDbContext)); var registration = Component.For(serviceTypes); registration.ImplementedBy(type); result.Configuration?.Invoke(registration); Assert.IsNull(registration.Name); Assert.IsNull(defaults.Name); registration.RegisterOptionally(); var token = kernel.OptimizeDependencyResolution(); var services = registration.FilterServices(kernel); Assert.AreEqual(services.Length, 1); Assert.AreEqual(services[0], typeof(MyDbContext)); var builder = kernel.ComponentModelBuilder; var customContributors = registration.GetContributors(services); var model = new ComponentModel(); Array.ForEach(customContributors, c => c.BuildComponentModel(kernel, model)); Assert.AreEqual(builder.Contributors.Length, 11); Assert.AreEqual(customContributors.Length, 2); foreach (var construction in builder.Contributors) { if (construction is PropertiesDependenciesModelInspector) { var targetType = model.Implementation; Assert.AreEqual(model.InspectionBehavior, PropertiesInspectionBehavior.Undefined); model.InspectionBehavior = (construction as PropertiesDependenciesModelInspector) .GetInspectionBehaviorFromTheConfiguration(model.Configuration); Assert.AreEqual(model.InspectionBehavior, PropertiesInspectionBehavior.All); var bindingFlags = BindingFlags.Public | BindingFlags.Instance; var properties = targetType.GetProperties(bindingFlags); Assert.AreEqual(properties.Length, 7); foreach (var property in properties) { Console.WriteLine(property.Name); try { var canWrite = property.CanWrite; } catch { Console.WriteLine(@"CanWrite Fail, Construction:{0}, Property{1}", construction, property); } try { var parameters = property.GetIndexParameters(); } catch { throw new NullReferenceException(@"GetIndexParameters Fail:" + property.Name); } try { var hasAttribute = property.HasAttribute <DoNotWireAttribute>(); } catch { Console.WriteLine(@"HasAttribute Fail, Construction:{0}, Property{1}", construction, property); } } break; } } token?.Dispose(); }
public static BasedOnDescriptor RegisterCommandHandlers(this FromAssemblyDescriptor me) { return(me.BasedOn(typeof(ICommandHandler <>)).WithService.Base().LifestyleTransient()); }
/// <summary> /// Register service based on the service as a service with the same name. /// </summary> /// <param name = "fromAssemblyDescriptor">From assembly descriptor.</param> /// <param name = "type">The type.</param> /// <returns></returns> public static BasedOnDescriptor BasedOnAsService(this FromAssemblyDescriptor fromAssemblyDescriptor, Type type) { return(fromAssemblyDescriptor.BasedOn(type).WithService.Select(new[] { type })); }
protected DetectiveIvestigationWindsorInstallerBase(FromAssemblyDescriptor fromAssemblyDescriptorDescriptor) { this.FromAssemblyDescriptor = fromAssemblyDescriptorDescriptor; }
public void Install(IWindsorContainer container, IConfigurationStore store) { FromAssemblyDescriptor fromAssemblyInDirectory = Classes.FromAssemblyInDirectory(new AssemblyFilter(PathHelper.BinPath(), "*.InternalService.dll")); container.Register(fromAssemblyInDirectory.BasedOn(typeof(IService <>)).WithService.DefaultInterfaces()); }