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) | string | AES加密,返回Base64编码的密文 |
Decrypt(string, string, string) | string | AES解密,返回明文 |
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
属性
属性名 | 类型 | 描述 |
---|---|---|
Instance | Logger | 单例实例 |
Log | ILog | log4net日志对象 |
静态方法
方法名 | 返回类型 | 描述 |
---|---|---|
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
属性
属性名 | 类型 | 描述 |
---|---|---|
RedisDb | IDatabase | Redis数据库实例 |
字符串操作方法
方法名 | 返回类型 | 描述 |
---|---|---|
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
属性
属性名 | 类型 | 描述 |
---|---|---|
Desc | string | 配置项描述 |
构造函数
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: 加密和哈希功能