Skip to content

Ccxc.Core.Utils 包

Ccxc.Core.Utils 提供了各种常用的工具类和扩展功能,包括加密解密、哈希计算、日志记录、Redis缓存、配置管理、时间戳转换等功能。

命名空间结构

  • Ccxc.Core.Utils - 核心工具类
  • Ccxc.Core.Utils.ExtensionFunctions - 扩展功能和转换器

加密和哈希工具

AesEncrypt 类

AES加密解密工具类,提供CBC模式的AES加密和解密功能。

csharp
public static class AesEncrypt

方法

方法名返回类型描述
Encrypt(string, string, string)stringAES加密,返回Base64编码的密文
Decrypt(string, string, string)stringAES解密,返回明文

Encrypt 方法

使用AES算法加密文本。

csharp
public static string Encrypt(string plainText, string key, string iv)

参数:

  • plainText (string): 待加密的明文
  • key (string): Base64编码的密钥
  • iv (string): Base64编码的初始化向量

返回值:

  • string: Base64编码的加密结果

加密配置:

  • 模式: CBC
  • 填充: PKCS7

Decrypt 方法

使用AES算法解密文本。

csharp
public static string Decrypt(string encryptedText, string key, string iv)

参数:

  • encryptedText (string): Base64编码的密文
  • key (string): Base64编码的密钥
  • iv (string): Base64编码的初始化向量

返回值:

  • string: 解密后的明文

HashTools 类

提供各种哈希算法的计算功能。

csharp
public static class HashTools

方法

方法名返回类型描述
HmacSha1Base64(string, string)string计算HMAC-SHA1哈希值,返回Base64编码
Md5Base64(string)string计算MD5哈希值,返回Base64编码
Md5Hex(string)string计算MD5哈希值,返回十六进制小写字符串

HmacSha1Base64 方法

计算带密钥的SHA1哈希值。

csharp
public static string HmacSha1Base64(string content, string key)

参数:

  • content (string): 待计算哈希的内容
  • key (string): HMAC密钥

返回值:

  • string: Base64编码的HMAC-SHA1哈希值

Md5Base64 方法

计算MD5哈希值并返回Base64编码。

csharp
public static string Md5Base64(string content)

参数:

  • content (string): 待计算哈希的内容

返回值:

  • string: Base64编码的MD5哈希值

Md5Hex 方法

计算MD5哈希值并返回十六进制字符串。

csharp
public static string Md5Hex(string content)

参数:

  • content (string): 待计算哈希的内容

返回值:

  • string: 十六进制小写字符串的MD5哈希值

日志工具

Logger 类

基于log4net的日志记录工具,支持控制台输出和文件记录。

csharp
public class Logger

属性

属性名类型描述
InstanceLogger单例实例
LogILoglog4net日志对象

静态方法

方法名返回类型描述
Debug(object)void记录调试信息
DebugAsync(object)Task异步记录调试信息
Info(object)void记录信息
InfoAsync(object)Task异步记录信息
Warn(object)void记录警告
WarnAsync(object)Task异步记录警告
Error(object)void记录错误
ErrorAsync(object)Task异步记录错误
Fatal(object)void记录致命错误
FatalAsync(object)Task异步记录致命错误

日志配置

  • 控制台输出: 显示INFO、WARN、ERROR、FATAL级别的日志
  • 文件输出:
    • 普通日志文件: log/yyyyMMdd.log
    • 错误日志文件: log/ERROR_yyyyMMdd.log
  • 文件策略:
    • 按日期和大小滚动
    • 最大文件大小: 10MB
    • 保留文件数量: 20个

Redis客户端

RedisClient 类

Redis缓存客户端,提供字符串、对象、哈希表、列表等数据类型的操作。

csharp
public class RedisClient

构造函数

csharp
public RedisClient(string connStr, int database = 0)

参数:

  • connStr (string): Redis连接字符串
  • database (int, 可选): 数据库编号,默认为0

属性

属性名类型描述
RedisDbIDatabaseRedis数据库实例

字符串操作方法

方法名返回类型描述
PutString(string, string, long)Task存储字符串
GetString(string)Task<string>获取字符串
PutObject(string, object, long)Task存储对象(JSON序列化)
GetObject<T>(string)Task<T>获取对象(JSON反序列化)

哈希表操作方法

方法名返回类型描述
PutHash(string, IDictionary<string, object>, long)Task存储哈希表
PutHashObject(string, string, object)Task存储哈希表单个字段
GetHashAll<T>(string)Task<List<T>>获取整个哈希表
GetHashKeys<T>(string)Task<List<(string, T)>>获取哈希表所有键值对
GetHash<T>(string, string)Task<T>获取哈希表单个字段
GetHashLength(string)Task<long>获取哈希表长度

列表操作方法

方法名返回类型描述
PutList(string, IList<object>, long)Task存储列表
GetList<T>(string, int, int, long)Task<List<T>>获取列表范围
GetListLength(string)Task<long>获取列表长度

通用操作方法

方法名返回类型描述
Delete(string)Task删除键
Delete(string, string)Task删除哈希表字段
Exists(string)Task<bool>检查键是否存在
Exists(string, string)Task<bool>检查哈希表字段是否存在
FindKeys(string)List<string>根据模式查找键

搜索方法

方法名返回类型描述
SearchHashKey<T>(string, string)Task<List<(string, T)>>按键名模式搜索哈希表
SearchHashValue<T>(string, string)Task<List<(string, T)>>按值内容搜索哈希表

特殊功能方法

方法名返回类型描述
RateLimiter(string, int, long, int, int)Task<int>令牌桶流量控制
GetSubscriber()ISubscriber获取发布订阅对象

RateLimiter 方法

基于令牌桶算法的流量控制。

csharp
public async Task<int> RateLimiter(string key, int max_permits, long current_time, int rate_per_day, int request_permits)

参数:

  • key (string): Redis存储键名
  • max_permits (int): 最大授权令牌数量
  • current_time (long): 当前时间戳(毫秒)
  • rate_per_day (int): 每日恢复的令牌数量
  • request_permits (int): 本次请求的令牌数量

返回值:

  • Task<int>: 实际授权的令牌数量

配置管理

SystemOption 类

基于TOML格式的系统配置管理工具。

csharp
public class SystemOption

静态方法

方法名返回类型描述
GetOption<T>(string)T获取配置对象
WriteConfigFileGenerate<T>(string, string, string)void写入配置项

GetOption 方法

从TOML配置文件中读取配置。

csharp
public static T GetOption<T>(string sectionName) where T : class, new()

参数:

  • sectionName (string): 配置段落名称

返回值:

  • T: 配置对象实例

特性:

  • 支持配置文件继承(extends)
  • 支持配置文件混入(mixin)
  • 自动生成缺失的配置项
  • 默认配置文件路径: Config/ccxc.config.toml

OptionDescriptionAttribute 特性

标注属性为系统配置项。

csharp
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class OptionDescriptionAttribute : Attribute

属性

属性名类型描述
Descstring配置项描述

构造函数

csharp
public OptionDescriptionAttribute(string value)

参数:

  • value (string): 配置项描述文本

时间工具

UnixTimestamp 类

Unix时间戳转换工具。

csharp
public class UnixTimestamp

静态方法

方法名返回类型描述
GetTimestamp(DateTime)long获取毫秒时间戳
FromTimestamp(long)DateTime从毫秒时间戳转换
GetTimestampSecond(DateTime)long获取秒时间戳
FromTimestampSecond(long)DateTime从秒时间戳转换

GetTimestamp 方法

将DateTime转换为Unix毫秒时间戳。

csharp
public static long GetTimestamp(DateTime d)

参数:

  • d (DateTime): 要转换的日期时间

返回值:

  • long: Unix毫秒时间戳
FromTimestamp 方法

将Unix毫秒时间戳转换为DateTime。

csharp
public static DateTime FromTimestamp(long timestamp)

参数:

  • timestamp (long): Unix毫秒时间戳

返回值:

  • DateTime: 转换后的日期时间

扩展功能

DynamicHelper 类

提供字典到动态对象的转换扩展方法。

csharp
public static class DynamicHelper

扩展方法

方法名返回类型描述
ToDynamic(this IDictionary)dynamic将字典转换为动态对象

ToDynamic 扩展方法

将IDictionary转换为ExpandoObject动态对象。

csharp
public static dynamic ToDynamic(this IDictionary dict)

参数:

  • dict (IDictionary): 要转换的字典

返回值:

  • dynamic: 动态对象

JSON转换器

FrontendLongConverter 类

用于前端长整型数据的JSON转换器。

csharp
public class FrontendLongConverter : JsonConverter

重写方法

方法名返回类型描述
CanConvert(Type)bool检查是否可以转换指定类型
ReadJson(JsonReader, Type, object, JsonSerializer)object读取JSON并转换
WriteJson(JsonWriter, object, JsonSerializer)void将对象写入JSON

支持类型:

  • Int64 / long
  • UInt64 / ulong

转换特性:

  • 读取时将字符串转换为长整型
  • 写入时将长整型转换为字符串

UnixTimestampConverter 类

Unix时间戳的JSON转换器。

csharp
public class UnixTimestampConverter : JsonConverter

重写方法

方法名返回类型描述
CanConvert(Type)bool检查是否可以转换long类型
ReadJson(JsonReader, Type, object, JsonSerializer)object将long时间戳转换为DateTime
WriteJson(JsonWriter, object, JsonSerializer)void将DateTime转换为long时间戳

转换特性:

  • 读取时将long时间戳转换为DateTime对象
  • 写入时将DateTime对象转换为long时间戳

依赖项

  • log4net: 日志记录功能
  • StackExchange.Redis: Redis客户端功能
  • Newtonsoft.Json: JSON序列化和反序列化
  • Tommy: TOML配置文件解析
  • System.Security.Cryptography: 加密和哈希功能

Released under the MIT License. Powered by VitePress.