public async Task Initialize_Dependecy()
        {
            // dependencies registration
            IoC.Container.RegisterServices(s =>
            {
                var typesResolver = new TypesResolver(() => new Type[] { typeof(TestModel) });
                s.AddScoped <ITypesResolver>(s => typesResolver);
                s.AddDbContext <IContext, TDbContext <IdentityUser, IdentityRole, string> >(options => {
                    options.UseInMemoryDatabase("nlayersapp-tests");
                }, ServiceLifetime.Scoped);
                s.AddMediatRHandlers(typesResolver);
                s.AddMediatR(Assembly.GetEntryAssembly());
            });


            mediator = IoC.ServiceProvider.GetRequiredService <IMediator>();
            var context = IoC.ServiceProvider.GetRequiredService <IContext>();

            await((DbContext)context).Database.EnsureDeletedAsync();
            await((DbContext)context).Database.EnsureCreatedAsync();

            context.Set <TestModel>().AddRange(test_Entities);

            await context.SaveChangesAsync(CancellationToken.None);
        }
コード例 #2
0
        static IEnumerable <Type> KnownTypes()
        {
            IList <Type> typesOfResource =
                TypesResolver.GetKnownTypes(null).Where(x => typeof(ResponseBase).IsAssignableFrom(x)).ToList();

            return(typesOfResource);
        }
        public async Task Initialize_Dependecy()
        {
            // dependencies registration
            IoC.Container.RegisterServices(s =>
            {
                var typesResolver = new TypesResolver(() => new Type[] { typeof(TestModel) });
                s.AddScoped <ITypesResolver>(s => typesResolver);
                s.AddDbContext <IContext, TDbContext <IdentityUser, IdentityRole, string> >(options => {
                    options.UseInMemoryDatabase("nlayersapp-db");
                    //.UseSqlite("Data Source=.\\Data\\nlayersapp.sqlite;");
                }, ServiceLifetime.Scoped);
                s.AddMediatRHandlers(typesResolver);
                s.AddMediatR(Assembly.GetEntryAssembly());
            });


            mediator = IoC.ServiceProvider.GetRequiredService <IMediator>();
            var context = IoC.ServiceProvider.GetRequiredService <IContext>();
            var context_as_dbContext = (DbContext)context;

            if (context_as_dbContext.Database.CanConnect())
            {
                await context_as_dbContext.Database.EnsureDeletedAsync();
            }
            await context_as_dbContext.Database.EnsureCreatedAsync();

            // migrate still not working on azure pipeline agent
            // ((DbContext)context).Database.Migrate();


            context.Set <TestModel>().AddRange(test_Entities);

            await context.SaveChangesAsync(CancellationToken.None);
        }
コード例 #4
0
        static IEnumerable <Type> KnownTypes()
        {
            IList <Type> typesOfResource =
                TypesResolver.GetKnownTypes(null).Where(x => typeof(DoorOpenBehaviorService).IsAssignableFrom(x)).ToList();

            return(typesOfResource);
        }
コード例 #5
0
        private static void Main(string[] args)
        {
            _typesResolver = new TypesResolver();

            var logger = _typesResolver.ResolveType <ILogger>();

            logger.WriteMessage("Initializing GPIO...");


            try
            {
                var initWrapper = _typesResolver.ResolveType <IWrapInit>();
                _gpioClass = new GPIOBoard(logger, initWrapper);

                var gpioWrapper = _typesResolver.ResolveType <IWrapGPIO>();
                RideTheHood(logger, gpioWrapper);
            }
            catch (Exception a)
            {
                logger.WriteMessage(a);
            }

            Console.WriteLine("All job is done");
            Console.ReadKey();
        }
コード例 #6
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            Configuration = new ConfigurationBuilder()
                            .AddEnvironmentVariables()
                            .AddJsonFile("./appsettings.json")
                            .Build();

            var connectionString = Configuration["SQL_CONN_STR"] ?? "Server=192.168.1.191;Initial Catalog=nlayersappdb-tests;User Id=sa;Password=mrullerp!0";

            TypesResolver resolver = getResolverFromConfig(nameof(TypesResolverOptions));

            services.AddScoped <ITypesResolver>(s => resolver);

            services.AddScoped <IContext, TDbContext>(s => s.GetRequiredService <TDbContext>());

            services.AddDbContext <TDbContext>(
                optionsAction: (s, o) =>
            {
                o.UseSqlServer(
                    connectionString: connectionString,
                    sqlServerOptionsAction: b =>
                {
                    b.MigrationsAssembly("NLayersApp.SampleProject");
                    b.EnableRetryOnFailure(3);
                }
                    );

                //var builder = new ModelBuilder(new ConventionSet());
                //    foreach (var type in resolver.RegisteredTypes)
                //    {
                //        builder.Entity(type);
                //    }
                //    builder.FinalizeModel();
                //    o.UseModel(builder.Model);
                o.UseOpenIddict();
            },
                contextLifetime: ServiceLifetime.Scoped
                );


            services.AddCors(options =>
                             options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
                                               .AllowAnyMethod()
                                               .AllowAnyHeader()));;

            services.AddMediatRHandlers(resolver);

            services.AddDynamicRolesAuthorizationServices <TDbContext>();

            services.AddControllers(c => c.AddDynamicRolesAuthorizationFilter <TDbContext>())
            .UseDynamicControllers(resolver)
            .AddControllersAsServices();

            services.ConfigureAuthenticationAndAuthorisation <IdentityUser, IdentityRole, string, TDbContext>();

            TypesResolver getResolverFromConfig(string configSection)
            {
                services.AddOptions <TypesResolverOptions>(configSection);

                TypesResolverOptions resolverOptions = new TypesResolverOptions();

                Configuration.GetSection(nameof(TypesResolverOptions)).Bind(resolverOptions);

                foreach (var definition in resolverOptions.TypesDefinitions)
                {
                    definition.Assembly = appendToExecutionPath(definition.Assembly);
                }

                var resolver = new TypesResolver(resolverOptions);

                return(resolver);
            }

            string appendToExecutionPath(string filename)
            {
                var assembly_location  = Assembly.GetEntryAssembly().Location;
                var latstIndexOf_slash = Assembly.GetEntryAssembly().Location.LastIndexOf('/');

                return($"{assembly_location.Remove(latstIndexOf_slash + 1)}{filename}");
            }
        }
コード例 #7
0
 public Startup()
 {
     _resolver = new TypesResolver(() => new[] { typeof(TestModel), typeof(Page), typeof(Section), typeof(Member), typeof(Component) });
 }