LingYanAspCoreFramework 8.0.5
LingYan_ASPFramework
介绍
适用于Asp.Net Core的后端框架
使用说明
1、模块化注入,模块内类应当继承BaseModule,此抽象类有三种形式 BaseModule<IServiceCollection, IServiceProvider>类型
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
//此扩展方法自动注入各模块及各模块方法及特性注入
builder.AppRegisterProjectModule();
var app = builder.Build();
//此扩展方法自动初始化各模块及各模块初始化方法
app.AppInitializationProjectModule();
app.Run();
}
}
模块化基类
模块内应当有一个基类继承BaseModule,此抽象类有三种形式
BaseModule<WebApplicationBuilder, WebApplication>
public class RESTApiModule : BaseModule<WebApplicationBuilder, WebApplication>
{
//此属性为模块注入加载顺序可不重写让其默认即可,如有特殊需求可重写规范加载顺序
public override int PageIndex { get; set; } = 5;
//此方法可扩展服务注册
public override void ARegisterModule(WebApplicationBuilder webBuilder)
{
throw new NotImplementedException();
}
//此方法可扩展应用初始化
public override void BInitializationModule(WebApplication webApp)
{
throw new NotImplementedException();
}
}
BaseModule<IServiceCollection, IServiceProvider>
public class RESTApiModule : BaseModule<IServiceCollection, IServiceProvider>
{
//此属性为模块注入加载顺序可不重写让其默认即可,如有特殊需求可重写规范加载顺序
public override int PageIndex { get; set; } = 5;
//此方法可扩展服务注册
public override void ARegisterModule(IServiceCollection services)
{
throw new NotImplementedException();
}
//此方法可扩展应用初始化
public override void BInitializationModule(IServiceProvider provider)
{
throw new NotImplementedException();
}
}
BaseModule<IServiceCollection, IConfigurationManager, IServiceProvider>
public class RESTApiModule : BaseModule<IServiceCollection, IConfigurationManager, IServiceProvider>
{
//此属性为模块注入加载顺序可不重写让其默认即可,如有特殊需求可重写规范加载顺序
public override int PageIndex { get; set; } = 5;
//此方法可扩展服务注册
public override void ARegisterModule(IServiceCollection services, IConfigurationManager configuration)
{
throw new NotImplementedException();
}
//此方法可扩展应用初始化
public override void BInitializationModule(IServiceProvider provider)
{
throw new NotImplementedException();
}
}
特性自动注册
LYTServiceAttribute服务特性
namespace LingTest.TestProvider
{
//该特性只需要打在服务类上,传入接口类型即可,框架会在启动时自动注入
[LYTService(typeof(ITestService))]
public class TestService : ITestService
{
public ResponceBody<string> TestBack()
{
return new ResponceBody<string>(20000, "测试返回");
}
}
}
LYInstanceAttribute实例特性
namespace LingTest.Helper
{
//实例特性,无需任何传参,注册案例
[LYInstance]
public class TestHelper
{
public void TestInstance()
{
}
}
}
LYDynamicRouteAttribute动态路由特性
namespace LingTest.DynamicRoute
{
//动态路由原则上只需要在类上添加[LYDynamicRoute]特性即可
//BaseDynamicRoute只是继承ControllerBase,可以更方便的使用OK(),NotFound()等种序列化方法
//动态路由的HTTP类型可以在配置文件中的./Envs/Configs/HttpMethod.json配置,也可以直接打赏路由类型特性
[LYDynamicRoute]
public class TestDynamicRoute : BaseDynamicRoute
{
public IActionResult TestPost()
{
return Ok("返回值");
}
[HttpGet]
public IActionResult TestGet()
{
return Ok("返回值");
}
}
}
LYAuthorizeHandlerAttribute权限处理器特性
LYGlobalFilterAttribute全局过滤器特性
LYManagerAttribute领域管理特性
LYMiddlewareAttribute中间件特性
LYDbContextAttribute数据库上下文特性
仓储与工作单元
仓储与工作单元已自动注入,可在任何地方引入。
仓储注入引用
[LYManager]
public class UserManager
{
public UserManager(IRepository<UserEntity> userRepo,
IRepository<TeamEntity> userTeamRepo,
IRepository<TeamMemberEntity> userTeamMemborRepo,
IRepository<UserFileEntity> userFileRepo)
{
UserRepo = userRepo;
TeamRepo = userTeamRepo;
TeamMemborRepo = userTeamMemborRepo;
UserFileRepo = userFileRepo;
}
public IRepository<UserEntity> UserRepo { get; }
public IRepository<TeamEntity> TeamRepo { get; }
public IRepository<TeamMemberEntity> TeamMemborRepo { get; }
public IRepository<UserFileEntity> UserFileRepo { get; }
public async Task<UserEntity> Queryuser(long userId)
{
return await this.UserRepo.GetFirstOrDefaultAsync(predicate: p => p.Id == userId && p.IsDeleted == false);
}
public async Task<UserEntity> Queryuser(string userPhone)
{
return await this.UserRepo.GetFirstOrDefaultAsync(predicate: p => p.UserPhone == userPhone && p.IsDeleted == false);
}
}
No packages depend on LingYanAspCoreFramework.
.NET 8.0
- AlibabaCloud.SDK.Dysmsapi20170525 (>= 3.1.3)
- CSRedisCore (>= 3.8.804)
- Essensoft.Paylink.Alipay (>= 4.1.9)
- Essensoft.Paylink.Security (>= 4.1.9)
- Essensoft.Paylink.WeChatPay (>= 4.1.9)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 8.0.15)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 8.0.15)
- Microsoft.EntityFrameworkCore.AutoHistory (>= 6.0.0)
- Microsoft.EntityFrameworkCore.Design (>= 8.0.15)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.15)
- Microsoft.EntityFrameworkCore.Sqlite (>= 8.0.15)
- Microsoft.Extensions.DependencyModel (>= 8.0.2)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.8.0)
- NLog.Database (>= 5.4.0)
- NLog.Web.AspNetCore (>= 5.4.0)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 8.0.11)
- Oracle.EntityFrameworkCore (>= 8.23.80)
- Polly (>= 8.5.2)
- Pomelo.EntityFrameworkCore.MySql (>= 8.0.3)
- Portable.BouncyCastle (>= 1.9.0)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 3.116.1)
- SkiaSharp.QrCode (>= 0.7.0)
- Swashbuckle.AspNetCore.SwaggerGen (>= 7.3.2)
- Swashbuckle.AspNetCore.SwaggerUI (>= 7.3.2)
- TencentCloudSDK (>= 3.0.1223)
- Yitter.IdGenerator (>= 1.0.15)
- ZXing.Net (>= 0.16.10)
| Version | Downloads | Last updated |
|---|---|---|
| 8.0.7 | 18 | 5/7/2025 |
| 8.0.6 | 6 | 5/7/2025 |
| 8.0.5 | 10 | 4/19/2025 |
| 8.0.4 | 4 | 4/19/2025 |
| 8.0.3 | 7 | 4/19/2025 |
| 8.0.2 | 7 | 4/19/2025 |
| 8.0.1 | 10 | 4/19/2025 |
| 8.0.0 | 7 | 4/16/2025 |
| 3.0.0 | 6 | 4/16/2025 |
| 2.0.8 | 14 | 1/17/2025 |
| 2.0.7 | 9 | 1/16/2025 |
| 2.0.6 | 7 | 1/16/2025 |
| 2.0.5 | 7 | 1/15/2025 |
| 2.0.4 | 7 | 1/15/2025 |
| 2.0.3 | 9 | 1/15/2025 |
| 2.0.2 | 7 | 1/15/2025 |
| 2.0.1 | 7 | 1/15/2025 |
| 2.0.0 | 10 | 1/15/2025 |
| 1.1.9 | 11 | 12/9/2024 |
| 1.1.8 | 7 | 12/9/2024 |
| 1.1.7 | 14 | 10/29/2024 |
| 1.1.6 | 7 | 10/29/2024 |
| 1.1.5 | 7 | 10/29/2024 |
| 1.1.4 | 7 | 10/29/2024 |
| 1.1.3 | 9 | 9/12/2024 |
| 1.1.2 | 7 | 9/9/2024 |
| 1.1.1 | 7 | 9/5/2024 |