Ejemplo n.º 1
0
        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");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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;
 }
Ejemplo n.º 7
0
 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());
 }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
 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;
     }
 }
Ejemplo n.º 10
0
        /// <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());
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Gets the assembly list.
        /// </summary>
        /// <param name="assemblyDescriptor">The assembly descriptor.</param>
        /// <returns>IList&lt;Assembly&gt;.</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());
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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;
            }
        }
Ejemplo n.º 17
0
        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))));
        }
Ejemplo n.º 18
0
        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>());
        }
Ejemplo n.º 19
0
 /// <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)));
 }
Ejemplo n.º 20
0
        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();
        }
Ejemplo n.º 21
0
 public static BasedOnDescriptor RegisterCommandHandlers(this FromAssemblyDescriptor me)
 {
     return(me.BasedOn(typeof(ICommandHandler <>)).WithService.Base().LifestyleTransient());
 }
Ejemplo n.º 22
0
 /// <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;
 }
Ejemplo n.º 24
0
        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());
        }