WitchC.Localization 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package WitchC.Localization --version 1.2.0
                    
NuGet\Install-Package WitchC.Localization -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WitchC.Localization" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WitchC.Localization" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="WitchC.Localization" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WitchC.Localization --version 1.2.0
                    
#r "nuget: WitchC.Localization, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WitchC.Localization@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WitchC.Localization&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=WitchC.Localization&version=1.2.0
                    
Install as a Cake Tool

WitchC Framework

╔═══════════════════════════════════════════════════╗
║                W i t c h C  🧙‍♀️                   ║
║            .NET 企业级应用开发框架              ║
║      (Wicked Intelligent .NET Core Framework)    ║
╚═══════════════════════════════════════════════════╝

.NET License Gitee Tests

📋 项目介绍

WitchC 是一个基于 .NET 8/9/10 的企业级应用开发框架,旨在提供简单、灵活、高效的开发体验。框架采用模块化设计,提供 21 个功能模块10 个扩展方法库,覆盖企业级应用开发的各个方面。

✨ 特性亮点

  • 🚀 模块化架构 — 按需引入,轻量灵活
  • 🔧 开箱即用 — 丰富的内置功能模块
  • 📦 NuGet 发布 — 每个模块独立打包
  • 🧪 测试驱动 — 83 个单元测试保障质量
  • 📖 中文文档 — 完善的中文注释和文档
  • 🎯 对标 Furion — 参考 Furion 设计,全部开源无锁定
  • 企业级调度 — 完整的 Cron 解析器、触发器系统、管理 Dashboard
  • 📢 事件驱动 — 延迟发布、模糊匹配、重试机制、静态门面
  • 🔄 约定式 DI — ITransient/IScoped/ISingleton 自动注册
  • 📋 统一返回 — 标准化 API 响应格式、分页支持

📦 模块总览

核心模块

模块 包名 说明 示例
WitchC WitchC 核心框架,App 门面类、扩展方法库 App.GetService<T>()
WitchC.ExceptionHandler WitchC.ExceptionHandler 全局异常处理、Oops API、错误码枚举 throw Oops.Oh("错误")
WitchC.DataAnnotations WitchC.DataAnnotations 数据验证、全局验证过滤器 [DataValidation]
WitchC.DynamicApi WitchC.DynamicApi 动态 WebAPI,零配置自动生成 RESTful API IDynamicApiController

数据模块

模块 包名 说明 示例
WitchC.DatabaseAccessor.SqlSugar WitchC.DatabaseAccessor.SqlSugar SqlSugar ORM 仓储模式、审计、工作单元 ISqlSugarRepository<T>
WitchC.Mapper WitchC.Mapper 对象映射(基于 Mapster) user.MapTo<UserDto>()
WitchC.Cache WitchC.Cache 分布式缓存(内存 + Redis) ICacheService.GetOrSetAsync()

通信模块

模块 包名 说明 示例
WitchC.Http WitchC.Http HTTP 远程请求封装 httpService.Get(url).SendAsAsync<T>()
WitchC.Email WitchC.Email 邮件发送(基于 MailKit) emailService.SendAsync(message)
WitchC.EventBus WitchC.EventBus 进程内事件总线 eventBus.PublishAsync(event)
WitchC.Cors WitchC.Cors CORS 跨域配置 AddWitchCCors()
WitchC.SignalR WitchC.SignalR 即时通讯(WebSocket) MapWitchCHubs()

安全模块

模块 包名 说明 示例
WitchC.Jwt WitchC.Jwt JWT 安全鉴权 AddWitchCJwt()
WitchC.Encryption WitchC.Encryption 数据加解密(MD5/SHA/AES) Encrypt.Md5("text")
WitchC.Desensitization WitchC.Desensitization 数据脱敏处理 Desensitize.Phone("138...")

存储模块

模块 包名 说明 示例
WitchC.FileStorage WitchC.FileStorage 文件存储(本地/云) fileStorage.UploadAsync()

工具模块

模块 包名 说明 示例
WitchC.IdGeneration WitchC.IdGeneration 分布式 ID 生成(雪花/有序 GUID) IdGenerator.NextSnowflakeId()
WitchC.Logging WitchC.Logging 操作日志自动记录 [OperationLog("登录")]
WitchC.Schedule WitchC.Schedule 定时任务调度(Cron/周期/宏触发器、Dashboard) AddWitchCSchedule()
WitchC.UnifyResult WitchC.UnifyResult 统一返回结果格式 AddWitchCUnifyResult()
WitchC.Localization WitchC.Localization 多语言本地化 L.Text("Hello")
WitchC.WorkerService WitchC.WorkerService 后台任务服务 AddWitchCWorker()

🛠️ 扩展方法库

WitchC.Extensions 包含 10 个扩展方法模块:

模块 主要方法 说明
TaskExtensions WithTimeout, RetryAsync, FireAndForget 异步任务超时、重试、后台执行
TypeExtensions IsNullable, IsNumeric, IsSimpleType, GetFriendlyName 类型判断与反射
EnumExtensions GetDescription, ToDictionary, ToList, ParseOrDefault 枚举描述与转换
JsonExtensions ToJson, FromJson, IsValidJson JSON 序列化/反序列化
LinqExpressionExtensions And, Or, Not, GetPropertyName 表达式树组合
HttpContextExtensions GetUserId, GetUserName, GetClientIp, IsAjaxRequest HTTP 请求信息
GuidExtensions ToShortString, ToBase64, NewSequentialGuid Guid 格式转换
StreamExtensions ToByteArray, ToString, ComputeMd5, ComputeSha256 流操作与哈希
CollectionExtensions ForEach, Batch, DistinctBy, Shuffle, ToTree 集合分批、去重、树形
DictionaryExtensions GetOrDefault, GetOrAdd, Merge, ToQueryString 字典安全操作

🆕 v1.2 新增功能

定时任务增强

// 注册定时任务服务
builder.Services.AddWitchCSchedule(options =>
{
    options.EnableDashboard = true;  // 启用管理界面
});

// 方式 1: 使用 Cron 表达式
builder.Services.AddScheduledJob("cleanup", "0 2 * * *", async (context, ct) =>
{
    // 每天凌晨 2 点执行清理任务
    await CleanupAsync();
});

// 方式 2: 使用宏触发器
builder.Services.AddScheduledJob("heartbeat", MacroTriggerType.Minutely, async (context, ct) =>
{
    // 每分钟执行心跳检测
    await HeartbeatAsync();
});

// 方式 3: 使用 IJob 接口
builder.Services.AddScheduledJob<MyJob>(builder =>
{
    builder.WithCron("*/5 * * * *")  // 每 5 分钟
           .WithRetry(3, 2000)        // 重试 3 次,间隔 2 秒
           .WithTimeout(TimeSpan.FromMinutes(5));
});

// 使用管理界面
app.UseScheduleDashboard("/schedule");

事件总线增强

// 注册事件总线
builder.Services.AddWitchCEventBus(options =>
{
    options.EnableFuzzyMatch = true;  // 启用模糊匹配
});

// 发布事件
await eventBus.PublishAsync(new UserCreatedEvent { UserId = 123 });

// 延迟发布
await eventBus.PublishDelayAsync(new OrderTimeoutEvent { OrderId = 456 }, TimeSpan.FromMinutes(30));

// 按事件 ID 发布
await eventBus.PublishAsync("user.login", new { UserId = 123, Time = DateTime.Now });

// 订阅事件
eventBus.Subscribe("user.*", async (source, ct) =>
{
    // 模糊匹配所有 user. 开头的事件
    Console.WriteLine($"收到事件: {source.EventId}");
});

// 静态门面
await MessageCenter.PublishAsync(new NotificationEvent { Message = "Hello" });

依赖注入增强

// 注册约定式依赖注入
builder.Services.AddWitchCDependencyInjection();

// 实现标记接口即可自动注册
public interface IUserService { }
public class UserService : IUserService, ITransient { }  // 自动注册为瞬态

public interface ICacheService { }
public class CacheService : ICacheService, ISingleton { }  // 自动注册为单例

// 使用 InjectionAttribute 控制注册
[Injection(Pattern = InjectionPatterns.FirstInterface, Order = 10)]
public class MyService : IMyService, ITransient { }

统一返回结果

// 注册统一返回结果
builder.Services.AddWitchCUnifyResult();

// 在控制器中使用
[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
    [HttpGet("{id}")]
    public IActionResult GetUser(int id)
    {
        var user = new { Id = id, Name = "张三" };
        return Success(user);  // 自动包装为统一格式
    }

    [HttpGet]
    public IActionResult GetUsers(int pageIndex = 1, int pageSize = 10)
    {
        var users = GetUsersFromDb();
        var total = GetTotalCount();
        return Paged(users, total, pageIndex, pageSize);  // 分页结果
    }
}

// 返回格式
// {
//   "statusCode": 200,
//   "succeeded": true,
//   "message": "success",
//   "data": { "id": 1, "name": "张三" },
//   "traceId": "abc123"
// }

🚀 快速开始

安装

# 从 NuGet 安装核心模块
dotnet add package WitchC

# 安装特定模块
dotnet add package WitchC.ExceptionHandler
dotnet add package WitchC.DynamicApi
dotnet add package WitchC.Jwt
dotnet add package WitchC.Cache
dotnet add package WitchC.Http

基础使用

// Program.cs
using WitchC.ExceptionHandler;
using WitchC.DynamicApi;
using WitchC.Jwt;
using WitchC.Cache;
using WitchC.Cors;
using WitchC.Http;
using WitchC.Localization;
using WitchC.FileStorage;
using WitchC.Logging;
using WitchC.Email;
using WitchC.SignalR;
using WitchC.Schedule;
using WitchC.WorkerService;

var builder = WebApplication.CreateBuilder(args);

// 注册服务
builder.Services.AddWitchCDynamicApi();
builder.Services.AddWitchCMemoryCache();
builder.Services.AddWitchCJwt(options =>
{
    options.SecretKey = "your-secret-key-at-least-32-chars";
    options.Issuer = "MyApp";
});
builder.Services.AddWitchCCors(options =>
{
    options.AllowAnyOrigin = true;
    options.AllowAnyMethod = true;
});
builder.Services.AddWitchCHttp();
builder.Services.AddWitchCLocalization();
builder.Services.AddWitchCFileStorage();
builder.Services.AddWitchCOperationLog();
builder.Services.AddWitchCEmail(options =>
{
    options.SmtpServer = "smtp.example.com";
    options.SmtpPort = 587;
});
builder.Services.AddWitchCSignalR();
builder.Services.AddWitchCSchedule();
builder.Services.AddWitchCWorker();

var app = builder.Build();

// 使用中间件
app.UseGlobalExceptionMiddleware(async (context, result) =>
{
    context.Response.StatusCode = result.StatusCode;
    await context.Response.WriteAsJsonAsync(new
    {
        errorCode = result.ErrorCode,
        message = result.Message
    });
});

app.UseWitchCCors();
app.UseWitchCLocalization();
app.MapWitchCHubs();
app.MapControllers();
app.Run();

📖 模块使用示例

1. 动态 WebAPI

// 定义服务接口
public interface IUserService : IDynamicApiController
{
    Task<UserDto> GetUser(int userId);
    Task<UserDto> CreateUser(CreateUserDto dto);
}

// 实现服务(自动暴露为 /api/user/get-user 等端点)
public class UserService : IUserService
{
    public async Task<UserDto> GetUser(int userId) { ... }
    public async Task<UserDto> CreateUser(CreateUserDto dto) { ... }
}

2. 异常处理

// 使用 Oops 抛出业务异常
throw Oops.Oh("用户不存在");
throw Oops.Oh(ErrorCodes.NotFound);
throw Oops.Oh(ErrorCodes.ValidationError, "用户名");

// 使用 IfException 特性
[IfException(typeof(InvalidOperationException), ErrorCode = "INVALID_OP")]
public IActionResult GetUser(int id) { ... }

3. 数据校验

// 使用 DataValidation 特性
[DataValidation]
public IActionResult CreateUser([FromBody] UserDto dto)
{
    // 自动验证,失败返回 400
    return Ok();
}

// 手动验证
var (isValid, errors) = DataValidation.TryValidate(model);

4. 事件总线

// 定义事件
public class UserCreatedEvent : IEvent
{
    public int UserId { get; set; }
    public string UserName { get; set; }
}

// 事件处理程序(自动注册)
public class UserCreatedEventHandler : IEventHandler<UserCreatedEvent>
{
    public async Task HandleAsync(UserCreatedEvent @event, CancellationToken ct)
    {
        Console.WriteLine($"用户 {@event.UserName} 已创建");
    }
}

// 发布事件
await eventBus.PublishAsync(new UserCreatedEvent { UserId = 1, UserName = "admin" });

5. HTTP 远程请求

// 链式调用
var user = await httpService.Get("https://api.example.com/users/1")
    .WithBearerToken(token)
    .WithTimeout(TimeSpan.FromSeconds(10))
    .SendAsAsync<UserDto>();

// POST 请求
var result = await httpService.Post("https://api.example.com/users")
    .WithJsonBody(new { Name = "张三", Age = 25 })
    .SendAsAsync<CreateResult>();

6. 文件存储

// 上传文件
var result = await fileStorage.UploadAsync(stream, "test.txt", "text/plain");

// 下载文件
using var stream = await fileStorage.DownloadAsync(filePath);

// IFormFile 扩展
var result = await fileStorage.SaveFileAsync(formFile);

// 批量上传
var results = await fileStorage.SaveFilesAsync(formFiles);

7. 多语言

// 获取本地化字符串
var text = localizationService.GetString("Hello", "zh-CN"); // "你好"
var text = localizationService.GetString("Welcome", "en-US", "John"); // "Welcome John"

// 使用 L 静态类
var text = L.Text("Hello");
var text = L.Text("Welcome", "John");

8. 定时任务

// 注册定时任务
builder.Services.AddScheduledTask("cleanup", "0 2 * * *", async ct =>
{
    // 每天凌晨 2 点执行清理
    await CleanupAsync(ct);
});

// 自定义后台服务
public class MyWorker : WitchCBackgroundService
{
    protected override int IntervalSeconds => 60;
    
    protected override async Task ExecuteTaskAsync(CancellationToken ct)
    {
        // 每 60 秒执行一次
    }
}

9. JWT 鉴权

// 生成令牌
var claims = new[]
{
    new Claim(ClaimTypes.NameIdentifier, "1"),
    new Claim(ClaimTypes.Name, "admin")
};
var token = jwtService.GenerateAccessToken(claims);
var refreshToken = jwtService.GenerateRefreshToken();

// 验证令牌
var isValid = jwtService.ValidateToken(token);
var principal = jwtService.GetPrincipalFromToken(token);

10. 邮件发送

// 发送简单邮件
await emailService.SendSimpleAsync("to@example.com", "主题", "正文");

// 发送 HTML 邮件
await emailService.SendSimpleAsync("to@example.com", "主题", "<h1>Hello</h1>", true);

// 发送带附件的邮件
var message = new EmailMessage
{
    To = { "to@example.com" },
    Subject = "带附件的邮件",
    HtmlBody = "<p>请查收附件</p>",
    Attachments = { await EmailAttachment.FromFileAsync("report.pdf") }
};
await emailService.SendAsync(message);

11. 数据脱敏

string phone = Desensitize.Phone("13812345678");     // "138****5678"
string idCard = Desensitize.IdCard("110101199001011234"); // "1101**********1234"
string email = Desensitize.Email("test@example.com"); // "tes***@example.com"
string name = Desensitize.Name("张三");               // "张*"
string bankCard = Desensitize.BankCard("6222021234567890123"); // "6222***********0123"

12. 分布式 ID

// 雪花 ID
long id = IdGenerator.NextSnowflakeId();
string idStr = IdGenerator.NextSnowflakeIdString();

// 有序 GUID
Guid guid = IdGenerator.NextSequentialGuid();

// 带前缀 ID
string orderId = IdGenerator.NextPrefixedId("ORD"); // "ORD000001"
string logId = IdGenerator.NextTimestampId("LOG");   // "LOG20240101120000001"

13. 操作日志

// 使用特性标记
[OperationLog("用户登录", Description = "用户登录系统")]
public IActionResult Login(LoginDto dto) { ... }

// 自动记录:操作人、请求路径、IP、耗时、状态码

📁 项目结构

WitchC/
├── framework/                              # 框架源码
│   ├── WitchC.sln                          # 框架解决方案(22 个项目)
│   ├── Directory.Build.props               # 全局构建属性
│   │
│   ├── WitchC/                             # 核心框架
│   │   ├── App/                            #   App 门面类
│   │   └── Extensions/                     #   10 个扩展方法库
│   │
│   ├── WitchC.ExceptionHandler/            # 异常处理
│   │   ├── Exceptions/                     #   BusinessException, FriendlyException
│   │   ├── Attributes/                     #   IfException, ErrorCodeItemMetadata
│   │   └── ErrorCodes/                     #   错误码枚举
│   │
│   ├── WitchC.DataAnnotations/             # 数据验证
│   │   ├── Attributes/                     #   DataValidation, NonValidation
│   │   ├── Filters/                        #   DataValidationFilter
│   │   └── Results/                        #   ValidationResult
│   │
│   ├── WitchC.DynamicApi/                  # 动态 WebAPI
│   │   ├── Attributes/                     #   ApiSettings, HttpMethodOverride
│   │   ├── Providers/                      #   DynamicApiFeatureProvider
│   │   ├── Selectors/                      #   DynamicApiSelector
│   │   └── Conventions/                    #   DynamicApiConvention
│   │
│   ├── WitchC.DatabaseAccessor.SqlSugar/   # SqlSugar 数据访问
│   │   ├── Repositories/                   #   仓储接口和实现
│   │   ├── Auditing/                       #   审计实体、拦截器
│   │   ├── UnitOfWork/                     #   工作单元
│   │   └── Filters/                        #   软删除筛选器
│   │
│   ├── WitchC.Mapper/                      # 对象映射
│   ├── WitchC.EventBus/                    # 事件总线
│   ├── WitchC.Http/                        # HTTP 请求
│   ├── WitchC.Email/                       # 邮件发送
│   ├── WitchC.Cors/                        # CORS 跨域
│   ├── WitchC.SignalR/                     # 即时通讯
│   ├── WitchC.Jwt/                         # JWT 鉴权
│   ├── WitchC.Encryption/                  # 数据加解密
│   ├── WitchC.Desensitization/             # 数据脱敏
│   ├── WitchC.FileStorage/                 # 文件存储
│   ├── WitchC.IdGeneration/                # 分布式 ID
│   ├── WitchC.Logging/                     # 操作日志
│   ├── WitchC.Schedule/                    # 定时任务
│   ├── WitchC.Localization/                # 多语言
│   ├── WitchC.WorkerService/               # 后台任务
│   ├── WitchC.Cache/                       # 分布式缓存
│   └── WebApplication1/                    # 测试应用
│
├── samples/                                # 示例项目
│   └── witchc-web-api/                     # RBAC 示例(DDD 架构)
│       ├── WitchC.Web.API/                 #   Web API 层
│       ├── WitchC.RBAC.Application/        #   应用层
│       ├── WitchC.RBAC.Domain/             #   领域层
│       ├── WitchC.RBAC.Infrastructure/     #   基础设施层
│       └── WitchC.RBAC.UnitTests/          #   单元测试
│
└── nupkgs/                                 # NuGet 包输出

🔧 技术栈

技术 版本 用途
.NET 8/9/10 运行时
ASP.NET Core 8.0+ Web 框架
SqlSugar 5.1.4.214 ORM
Mapster 7.4.0 对象映射
MailKit 4.3.0 邮件发送
SignalR 内置 即时通讯
System.IdentityModel.Tokens.Jwt 7.0+ JWT 鉴权
xUnit 2.5.3 单元测试
Moq 4.20.70 Mock 框架

🧪 测试

# 运行所有测试
dotnet test samples/witchc-web-api/WitchC.RBAC.UnitTests/

# 运行特定测试类
dotnet test --filter "ClassName=EncryptTests"

# 运行特定测试方法
dotnet test --filter "MethodName=Md5_ShouldReturn32CharHash"

测试覆盖

模块 测试数 状态
Oops 异常处理 5
BusinessException 3
DataValidation 3
Mapper 2
EventBus 2
DynamicApi 1
Auditing 1
SoftDelete 2
Encrypt 5
IdGenerator 5
Desensitize 5
OperationLog 3
FileStorage 5
Localization 7
SignalR 6
WorkerService 6
总计 61 ✅ 全部通过

📖 核心概念

1. App 门面类

// 获取配置
var value = App.GetConfig<string>("ConnectionStrings:Default");

// 获取选项
var options = App.GetOptions<JwtOptions>();

// 获取服务
var service = App.GetService<IUserService>();

// 获取当前用户 ID
var userId = App.HttpContext?.GetUserId();

2. 服务注册

// 注册所有模块
builder.Services.AddWitchCDynamicApi();
builder.Services.AddWitchCMemoryCache();
builder.Services.AddWitchCJwt(options => { ... });
builder.Services.AddWitchCCors(options => { ... });
builder.Services.AddWitchCHttp();
builder.Services.AddWitchCSignalR();
builder.Services.AddWitchCSchedule();
builder.Services.AddWitchCLocalization();
builder.Services.AddWitchCFileStorage();
builder.Services.AddWitchCOperationLog();
builder.Services.AddWitchCEmail(options => { ... });
builder.Services.AddWitchCWorker();

3. 中间件配置

// 全局异常处理
app.UseGlobalExceptionMiddleware(async (context, result) => { ... });

// CORS 跨域
app.UseWitchCCors();

// 多语言
app.UseWitchCLocalization();

// SignalR Hub
app.MapWitchCHubs();

🆚 与 Furion 对比

维度 WitchC Furion
模块数量 21 个 39 个
扩展方法 10 个模块 多个静态类
开源协议 Apache 2.0 MIT
VIP 锁定 无(全部开源) 部分功能需 VIP
ORM 支持 SqlSugar EF Core + SqlSugar
文档 中文 README 完整文档站点
社区 新项目 16,000+ Stars
成熟度 v1.0(早期) v4.9(成熟)

WitchC 已实现的 Furion 模块

Furion 模块 WitchC 对应 状态
App 静态类 WitchC.App
Oops 静态类 WitchC.ExceptionHandler
DataValidator WitchC.DataAnnotations
动态 WebAPI WitchC.DynamicApi
对象映射 WitchC.Mapper
事件总线 WitchC.EventBus
数据库访问 WitchC.DatabaseAccessor.SqlSugar
异常处理 WitchC.ExceptionHandler
HTTP 远程请求 WitchC.Http
分布式缓存 WitchC.Cache
安全鉴权 WitchC.Jwt
CORS 跨域 WitchC.Cors
定时任务 WitchC.Schedule
数据加解密 WitchC.Encryption
分布式 ID WitchC.IdGeneration
脱敏处理 WitchC.Desensitization
操作日志 WitchC.Logging
文件存储 WitchC.FileStorage
多语言 WitchC.Localization
即时通讯 WitchC.SignalR
辅助角色服务 WitchC.WorkerService
邮件发送 WitchC.Email

🎯 路线图

v1.0.0 (已完成)

  • 核心框架搭建
  • 21 个功能模块
  • 10 个扩展方法库
  • 61 个单元测试
  • 示例项目(RBAC DDD)

v1.1.0 (规划中)

  • 视图/模板引擎
  • 工作流引擎
  • 分布式事务
  • API 网关
  • 更多单元测试

v2.0.0 (远景)

  • 微服务支持
  • 云原生适配
  • AI 集成
  • 低代码平台

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 开启 Pull Request

📄 许可证

本项目采用 Apache 2.0 许可证 - 查看 LICENSE 文件了解详情


📞 支持与联系


🙏 致谢

感谢以下开源项目:


╔═══════════════════════════════════════════════════╗
║   感谢使用 WitchC 框架!让我们一起创造魔法!   ║
║   Let's make some magic with .NET! ✨             ║
╚═══════════════════════════════════════════════════╝

最后更新: 2026年6月

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on WitchC.Localization:

Package Downloads
WitchC

WitchC 企业级应用开发框架 - 一键引入全部功能模块(聚合包,也可按需单独安装子模块)

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.6.0 107 8/30/2026
1.5.3 108 8/30/2026
1.5.2 107 8/23/2026
1.4.0 104 8/22/2026
1.2.0 123 6/29/2026