From 10ac041e45e1b51705f548e12dab659b7fea2b65 Mon Sep 17 00:00:00 2001 From: TooYoungTooSimp <6648049+TooYoungTooSimp@users.noreply.github.com> Date: Tue, 9 Nov 2021 12:26:20 +0800 Subject: [PATCH] Tue, 09 Nov 2021 12:26:20 GMT --- Program.cs | 78 ++++++++++++++++++++++++++++-------------- Startup.cs | 75 ---------------------------------------- Utilities/Inject.cs | 8 ++++- cugoj-ng-server.csproj | 1 + 4 files changed, 61 insertions(+), 101 deletions(-) delete mode 100644 Startup.cs diff --git a/Program.cs b/Program.cs index 3816515..d4f25a8 100644 --- a/Program.cs +++ b/Program.cs @@ -1,26 +1,54 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; - -namespace cugoj_ng_server +using cugoj_ng_server.Utilities; +using StackExchange.Redis; +using System.Data; + +var builder = WebApplication.CreateBuilder(args); + +var env = builder.Environment; +var services = builder.Services; +var configuration = builder.Configuration; + +// Add services to the container. +var redisConnstr = configuration.GetConnectionString("redis"); +var mysqlConnstr = configuration.GetConnectionString("mysql"); +var sessionTimeout = configuration.GetValue("Config:SessionTimeout"); + +Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; + +services.AddStackExchangeRedisCache(opt => +{ + opt.Configuration = redisConnstr; + opt.InstanceName = "CUGOJ$"; +}); + +services.AddSession(opt => +{ + opt.Cookie.Name = "_SESSION"; + opt.Cookie.IsEssential = true; + opt.IdleTimeout = TimeSpan.FromMinutes(sessionTimeout); +}); + +Inject.SetPropertiesByType(new() { - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} + { typeof(IConnectionMultiplexer), ConnectionMultiplexer.Connect(redisConnstr) }, + { typeof(Func), new Func(() => new MySql.Data.MySqlClient.MySqlConnection(mysqlConnstr)) }, +}); + +services.AddControllers().AddJsonOptions(opt => +{ + opt.JsonSerializerOptions.IncludeFields = true; +}); + +// Configure the HTTP request pipeline. +var app = builder.Build(); + +if (env.IsDevelopment()) + app.UseDeveloperExceptionPage(); + +app.UseRouting(); + +app.UseSession(); + +app.MapControllers(); + +app.Run(); diff --git a/Startup.cs b/Startup.cs deleted file mode 100644 index 19c7523..0000000 --- a/Startup.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using StackExchange.Redis; - -namespace cugoj_ng_server -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - var redisConnstr = Configuration.GetConnectionString("redis"); - var mysqlConnstr = Configuration.GetConnectionString("mysql"); - var sessionTimeout = Configuration.GetValue("Config:SessionTimeout"); - services.AddStackExchangeRedisCache(opt => - { - opt.Configuration = redisConnstr; - opt.InstanceName = "CUGOJ$"; - }); - services.AddSession(opt => - { - opt.Cookie.Name = "_SESSION"; - opt.Cookie.IsEssential = true; - opt.IdleTimeout = TimeSpan.FromMinutes(sessionTimeout); - }); - Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; - Utilities.Inject.SetPropertiesByType(typeof(Models.DbConn), null, new() - { - { typeof(IConnectionMultiplexer), ConnectionMultiplexer.Connect(redisConnstr) }, - { typeof(Func), new Func(() => new MySql.Data.MySqlClient.MySqlConnection(mysqlConnstr)) }, - }); - services.AddControllers().AddJsonOptions(opt => - { - opt.JsonSerializerOptions.IncludeFields = true; - }); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - app.UseRouting(); - - app.UseSession(); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/Utilities/Inject.cs b/Utilities/Inject.cs index bbc6a50..92c9ba5 100644 --- a/Utilities/Inject.cs +++ b/Utilities/Inject.cs @@ -11,7 +11,7 @@ namespace cugoj_ng_server.Utilities { const BindingFlags bindingAttr = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; - public static void SetPropertiesByType(Type type, object obj, Dictionary rules, BindingFlags bindingFlags = bindingAttr) + public static void SetProperties(Type type, object obj, Dictionary rules, BindingFlags bindingFlags = bindingAttr) { Array.ForEach(type.GetProperties(bindingFlags), propInfo => { @@ -19,5 +19,11 @@ namespace cugoj_ng_server.Utilities propInfo.SetValue(obj, propValue); }); } + public static void SetProperties(T obj, Dictionary rules, BindingFlags bindingFlags = bindingAttr) => + SetProperties(typeof(T), obj, rules, bindingFlags); + + public static void SetPropertiesByType(Dictionary rules, BindingFlags bindingFlags = bindingAttr) => + SetProperties(typeof(T), null, rules, bindingFlags); + } } diff --git a/cugoj-ng-server.csproj b/cugoj-ng-server.csproj index 93ff987..85212cc 100644 --- a/cugoj-ng-server.csproj +++ b/cugoj-ng-server.csproj @@ -3,6 +3,7 @@ net6.0 cugoj_ng_server + enable