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 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"); } } } }
/// <summary> /// /// </summary> /// <param name="services"></param> /// <param name="assembly"></param> /// <returns></returns> public static IServiceCollection RegisterAssemblyByConvention(this IServiceCollection services, Assembly assembly) { var context = new ConventionalRegistrationContext(assembly, services); GetOrCreateRegistrarList(services).ForEach(registrar => registrar.Register(context)); return(services); }
public void RegisterAssembly(ConventionalRegistrationContext context) { context.IocContainer.Register( Classes.FromAssembly(context.Assembly) .BasedOn <Controller>() .LifestyleTransient() ); }
public void Test_ConventionalRegistrationContext() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); Assert.IsNotNull(context); }
public void Test_Register() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var result = BasedOnDescriptor(context); context.IocManager.IocContainer.Register(result); }
public void Test_GetNameOrConnectionStringOrNull() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var connectionString = context.IocManager.GetNameOrConnectionStringOrNull(); Assert.IsNull(connectionString); }
public void Test_FromAssembly() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = Classes.FromAssembly(context.Assembly); Assert.IsNotNull(descriptor); }
public void Test_KernelRegister3() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var result = BasedOnDescriptor(context); var kernel = new DefaultKernel(); ((IRegistration)result).Register(kernel); }
/// <summary> /// 通过程序集在通用注册规则下正式注册 /// </summary> /// <param name="assembly"></param> public void RegisterAssemblyByConvention(Assembly assembly) { var context = new ConventionalRegistrationContext(assembly, this); foreach (var registerer in _conventionalRegistrars) { registerer.RegisterAssembly(context); } IocContainer.Install(FromAssembly.Instance(assembly)); }
public void Test_BasedOn() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = Classes.FromAssembly(context.Assembly).IncludeNonPublicTypes().BasedOn <AbpDbContext>(); Assert.IsNotNull(descriptor); Assert.AreEqual(context.IocManager, LocalIocManager); Assert.IsNotNull(context.IocManager.IocContainer); Assert.IsNotNull(context.IocManager.IocContainer.Kernel); }
public void Test_KernelRegister4() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = Classes.FromAssembly(context.Assembly); var result = descriptor.BasedOn(new List <Type> { typeof(AbpDbContext) }); var kernel = new DefaultKernel(); ((IRegistration)result).Register(kernel); }
/// <summary> /// Registers types of given assembly by all conventional registerers. See <see cref="AddConventionalRegisterer"/> method. /// </summary> /// <param name="assembly">Assembly to register</param> /// <param name="config">Additional configuration</param> public void RegisterAssemblyByConvention(Assembly assembly, ConventionalRegistrationConfig config) { var context = new ConventionalRegistrationContext(assembly, IocContainer, config); foreach (var registerer in _conventionalRegisterers) { registerer.RegisterAssembly(context); } if (config.InstallInstallers) { IocContainer.Install(FromAssembly.Instance(assembly)); } }
/// <summary> /// Registers types of given assembly by all conventional registrars. See <see cref="AddConventionalRegistrar" /> /// method. /// </summary> /// <param name="assembly">Assembly to register</param> /// <param name="config">Additional configuration</param> public void RegisterAssemblyByConvention(Assembly assembly, ConventionalRegistrationConfig config) { var context = new ConventionalRegistrationContext(assembly, this, config); if (config.InstallInstallers) { IocContainer.Install(FromAssembly.Instance(assembly)); } foreach (var registerer in _conventionalRegistrars) { registerer.RegisterAssembly(context); } }
public void Test_KernelRegister7() { 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); var kernel = new DefaultKernel(); Assert.AreEqual(result.FromDescriptor, descriptor); ((IRegistration)result).Register(kernel); }
public void Test_LifestyleTransient() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = Classes.FromAssembly(context.Assembly) .IncludeNonPublicTypes() .BasedOn <AbpDbContext>() .WithServiceSelf() .LifestyleTransient(); Assert.IsNotNull(descriptor); Assert.IsNotNull(descriptor.WithService); }
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(); }
private static BasedOnDescriptor BasedOnDescriptor(ConventionalRegistrationContext context) { var descriptor = Classes.FromAssembly(context.Assembly) .IncludeNonPublicTypes() .BasedOn <AbpDbContext>() .WithServiceSelf() .LifestyleTransient(); var result = descriptor.Configure(c => c.DynamicParameters( (kernel, dynamicParams) => { var connectionString = context.IocManager.GetNameOrConnectionStringOrNull(); if (!string.IsNullOrWhiteSpace(connectionString)) { dynamicParams["nameOrConnectionString"] = connectionString; } })); return(result); }
public void Test_Configure() { var context = new ConventionalRegistrationContext( Assembly.GetExecutingAssembly(), LocalIocManager, new ConventionalRegistrationConfig()); var descriptor = Classes.FromAssembly(context.Assembly) .IncludeNonPublicTypes() .BasedOn <AbpDbContext>() .WithServiceSelf() .LifestyleTransient(); var result = descriptor.Configure(c => c.DynamicParameters( (kernel, dynamicParams) => { var connectionString = context.IocManager.GetNameOrConnectionStringOrNull(); if (!string.IsNullOrWhiteSpace(connectionString)) { dynamicParams["nameOrConnectionString"] = connectionString; } })); Assert.IsNotNull(result); }
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(); }