XiaoFeng.Core
C#公用类库,网络库,包含了Json,Xml,ADO.NET数据库操作兼容以下数据库(SQLSERVER,MYSQL,ORACLE,达梦,SQLITE,ACCESS,OLEDB,ODBC等数十种数据库),正则表达式,QueryableX(ORM)和EF无缝对接,网络日志,调度,IO操作,加密算法(AES,DES,DES3,MD5,RSA,RC4,SHA等常用加密算法),超级好用的配置管理器,应用池,类型转换等功能。
Install / Use
/learn @zhuovi/XiaoFeng.CoreREADME
XiaoFeng.Core

Nuget:XiaoFeng.Core
| QQ群号 | QQ群 | 公众号 |
| :----:| :----: | :----: |
| 748408911 |
|
|
源码: https://github.com/zhuovi/xiaofeng.core
教程: https://www.eelf.cn
C#公用核心基础库,包含了Json,Xml,ADO.NET数据库操作兼容以下数据库(SQLSERVER,MYSQL,ORACLE,达梦,SQLITE,ACCESS,OLEDB,ODBC等数十种数据库),正则表达式,QueryableX(ORM)和EF无缝对接,网络日志,调度,IO操作,加密算法(AES,DES,DES3,MD5,RSA,RC4,SHA等常用加密算法),超级好用的配置管理器,应用池,类型转换等功能。
XiaoFeng.Core
XiaoFeng.Core generator with XiaoFeng.Core.
Install
.NET CLI
$ dotnet add package XiaoFeng.Core --version 2.3.6
Package Manager
PM> Install-Package XiaoFeng.Core --Version 2.3.6
PackageReference
<PackageReference Include="XiaoFeng.Core" Version="2.3.6" />
Paket CLI
> paket add XiaoFeng.Core --version 2.3.6
Script & Interactive
> #r "nuget: XiaoFeng.Core, 2.3.6"
Cake
// Install XiaoFeng.Core as a Cake Addin
#addin nuget:?package=XiaoFeng.Core&version=2.3.6
// Install XiaoFeng.Core as a Cake Tool
#tool nuget:?package=XiaoFeng.Core&version=2.3.6
更新日志
2023-11-17 v 2.3.6
1.新增Enum判断是否有指定特性方法IsDefined;
2.修复Redis中publish时返回结果状态不对的bug;
3.优化HttpHelper中获取Cookies;
2023-10-27 v 2.3.5
Job 作业
1.增加作业Job设置取消指令方法,启动设置取消指令方法;
2.优化IJob事件;
XiaoFeng.ParameterCollection 参数集
1.ParameterCollection中增加ToJson方法;
XiaoFeng.Http 网络库
1.增加HttpHelper中HttpRequest类中直接可以调用DownFileAsync;
XiaoFeng.PrototypeHelper 扩展方法
1.优化For扩展方法;
2.增加扩展方法Object.ToStringX();
3.优化扩展方法GetValue中字符串转换对象的匹配;
正则表达式
1.优化正则表达式网址,Ftp正则增加汉字识别;
XiaoFeng.Json
1.优化Json可以把对象转成字符串的属性StringObjectConverter;
XiaoFeng.Threading
1.Setting设置Job消息日志最大条数;
2.优化作业调度,把一次性作业,间隔作业独立处理,提高定时调度性能,优化作业记录日志最大记录减少内存开支;
3.任务队列升级到可多线程消费任务;优化调度作业取消事件;
XiaoFeng.Log
1.升级日志,增加高并发下日志写的没有输入多时导致内存一直上涨的问题,队列数据超过65535就清空一次队列;
2023-08-29 v 2.3.4
1.优化Redis有时为无限等待bug;
2.优化Redis连接;
3.优化ParameterCollection
2023-08-22 v 2.3.3
1.HttpHelper中HttpSocket获取Https优化;
2.XiaoFeng设置中增加调度日志输出等级设置,默认是Warn;
3.增加ParameterCollection类专一来处理参数排序拼接;
4.修改JobScheduler输出日志等级;
5.增加将枚举转换换成字符串大小写表示形式;
6.ParameterCollection类增加GetBytes方法,增加多种构造器可以设置是否URL编码及字符串编码;
7.增加扩展RSAEncryption算法SignHash,VerifyHash;
8.修复Json,Xml中类型为可空枚举时,应该序列化成key则序列化成value的bug;
9.优化Redis关闭;
2023-08-03 v 2.3.0
1.删除过渡命名空间XiaoFeng.Model.Core; 2.优化通过模型生成数据表; 3.新增索引属性TableIndexAttribute; 4.新增模型索引属性;新增获取模型索引属性; 5.新增查找数据库表是否存在; 6.修复获取枚举GetDescription时无当前枚举时报错; 7.增加调度作业Ijob中参数可通过方法分步设置; 8.设置作业任务接口IJobWorker; 9.增加FayFile的GetBytes,GetText()方法; 10.ConfigSet增加泛路径设置,一个配置模型匹配多个配置文件; 11.更新线程池清除过期时间长度为10分钟; 12.修复在NETSTANDARD 2.0下没有Split(char )方法; 13.修复mysql中date_format格式; 14.修复HttpRequest中ClentCertificates改为ClientCertificates;
2023-05-16 v 2.2.2
1.优化DataHelperX;
2.优化ToCast Byte转SByte;
3.优化ResponseMessage为空的字段不显示;
4.修复判断身份证号正则,JSON正则bug;
5.增加ToJson是否忽略定义节点;
6.增加ToJson长整型大于9007199254740992时是否序列化成字符串节点;
7.修复JSON序列化长整型大于9007199254740992时前端显示0的问题;
XiaoFeng 类库包含库
| 命名空间 | 所属类库 | 开源状态 | 说明 | 包含功能 | | :----| :---- | :---- | :----: | :---- | | XiaoFeng.Prototype | XiaoFeng.Core | :white_check_mark: | 扩展库 | ToCase 类型转换<br/>ToTimestamp,ToTimestamps 时间转时间戳<br/>GetBasePath 获取文件绝对路径,支持Linux,Windows<br/>GetFileName 获取文件名称<br/>GetMatch,GetMatches,GetMatchs,IsMatch,ReplacePatten,RemovePattern 正则表达式操作<br/> | | XiaoFeng.Net | XiaoFeng.Net | :white_check_mark: | 网络库 | XiaoFeng网络库,封装了Socket客户端,服务端(Socket,WebSocket),根据当前库可轻松实现订阅,发布等功能。| | XiaoFeng.Http | XiaoFeng.Core | :white_check_mark: | 模拟请求库 | 模拟网络请求 | | XiaoFeng.Data | XiaoFeng.Core | :white_check_mark: | 数据库操作库 | 支持SQLSERVER,MYSQL,ORACLE,达梦,SQLITE,ACCESS,OLEDB,ODBC等数十种数据库 | | XiaoFeng.Cache | XiaoFeng.Core | :white_check_mark: | 缓存库 | 内存缓存,Redis,MemcachedCache,MemoryCache,FileCache缓存 | | XiaoFeng.Config | XiaoFeng.Core | :white_check_mark: | 配置文件库 | 通过创建模型自动生成配置文件,可为xml,json,ini文件格式 | | XiaoFeng.Cryptography | XiaoFeng.Core | :white_check_mark: | 加密算法库 | AES,DES,RSA,MD5,DES3,SHA,HMAC,RC4加密算法 | | XiaoFeng.Excel | XiaoFeng.Excel | :white_check_mark: | Excel操作库 | Excel操作,创建excel,编辑excel,读取excel内容,边框,字体,样式等功能 | | XiaoFeng.Ftp | XiaoFeng.Ftp | :white_check_mark: | FTP请求库 | FTP客户端 | | XiaoFeng.IO | XiaoFeng.Core | :white_check_mark: | 文件操作库 | 文件读写操作 | | XiaoFeng.Json | XiaoFeng.Core | :white_check_mark: | Json序列化,反序列化库 | Json序列化,反序列化库 | | XiaoFeng.Xml | XiaoFeng.Core | :white_check_mark: | Xml序列化,反序列化库 | Xml序列化,反序列化库 | | XiaoFeng.Log | XiaoFeng.Core | :white_check_mark: | 日志库 | 写日志文件,数据库 | | XiaoFeng.Memcached | XiaoFeng.Memcached | :white_check_mark: | Memcached缓存库 | Memcached中间件,支持.NET框架、.NET内核和.NET标准库,一种非常方便操作的客户端工具。实现了Set,Add,Replace,PrePend,Append,Cas,Get,Gets,Gat,Gats,Delete,Touch,Stats,Stats Items,Stats Slabs,Stats Sizes,Flush_All,Increment,Decrement,线程池功能。| | XiaoFeng.Redis | XiaoFeng.Redis | :white_check_mark: | Redis缓存库 | Redis中间件,支持.NET框架、.NET内核和.NET标准库,一种非常方便操作的客户端工具。实现了Hash,Key,String,ZSet,Stream,Log,List,订阅发布,线程池功能; | | XiaoFeng.Threading | XiaoFeng.Core | :white_check_mark: | 线程库 | 线程任务,线程队列 | | XiaoFeng.Mvc | XiaoFeng.Mvc | :x: | 低代码WEB开发框架 | .net core 基础类,快速开发CMS框架,真正的低代码平台,自带角色权限,WebAPI平台,后台管理,可托管到服务运行命令为:应用.exe install 服务名 服务说明,命令还有 delete 删除 start 启动 stop 停止。 | | XiaoFeng.Proxy | XiaoFeng.Proxy | :white_check_mark: | 代理库 | 开发中 | | XiaoFeng.TDengine | XiaoFeng.TDengine | :white_check_mark: | TDengine 客户端 | 开发中 | | XiaoFeng.GB28181 | XiaoFeng.GB28181 | :white_check_mark: | 视频监控库,SIP类库,GB28181协议 | 开发中 | | XiaoFeng.Onvif | XiaoFeng.Onvif | :white_check_mark: | 视频监控库Onvif协议 | XiaoFeng.Onvif 基于.NET平台使用C#封装Onvif常用接口、设备、媒体、云台等功能, 拒绝WCF服务引用动态代理生成wsdl类文件 , 使用原生XML扩展标记语言封装参数,所有的数据流向都可控。 | | FayElf.Plugins.WeChat | FayElf.Plugins.WeChat | :white_check_mark: | 微信公众号,小程序类库 | 微信公众号,小程序类库。 |
XiaoFeng 扩展方法
万能的类型转换扩展方法 ToCast<T>()
当前方法可转换任何值类型包括 对象类型,数组类型. 在转换方法前,首选会验证当前值,类型和要转换的类型是否相同,接着就是验证,它是否符合目标类型的格式,如果不符合会转换成目标类型的默认值,也可以设置默认值。
数据类型相互转换如: 字符串转整型,字符串转日期,字符串转UUID
用法示例:
using XiaoFeng;
int a = "10".ToCast<int>();
Int64 b = "10".ToCast<Int64>();
double c = "10".ToCast<double>();
DateTime d = "2022-01-19".ToCast<DateTime>();
float e = "".ToCast<float>(1.0);
int f = (int)"".GetValue(typeof(int));
Guid g = "58AFBEB5791311ECBF49FA163E542B11".ToCast<Guid>();
Guid h = "58AFBEB5-7913-11EC-BF49-FA163E542B11".ToCast<Guid>();
还有一系列专一处理字符串转相关类型的方法,如:
Int16 a = "1".ToInt16();
int b = "2".ToInt32();
Int64 c = "3".ToInt64();
UInt16 d = "4".ToUInt16();
UInt32 e = "5".ToUInt32();
UInt64 f ="6".ToUInt64();
float e = "7.2".ToFloat();
DateTime g = "2022-01-19 12:32".ToDateTime();
double h = "6.3".ToDouble();
byte i = "2".ToByte();
Boolean j = "1".ToBoolean();
Boolean k = "true".ToBoolean();
Boolean l = "False".ToBoolean();
Decimal m = "3.658".ToDecimal();
long n = "2584512".ToLong();
Guid o = "58AFBEB5791311ECBF49FA163E542B11".ToGuid();
Guid p = "58AFBEB5-7913-11EC-BF49-FA163E542B11".ToGuid();
获取对象基础类型 GetValueType
用法实例
var a = "a".GetValueType();
var b = 10.GetValueType();
var c = new{a="a",b="b"}.GetValueType();
var d = new Dictionary<String,String>().GetValueType();
返回的是一个枚举类型 ValueTypes
/// <summary>
/// 值类型枚举
/// </summary>
public enum ValueTypes
{
/// <summary>
/// 空
/// </summary>
[Description("空")]
Null = 0,
/// <summary>
/// 值
/// </summary>
[Description("值")]
Value = 1,
/// <summary>
/// 类
/// </summary>
[Description("类")]
Class = 2,
/// <summary>
/// 结构体
/// </summary>
[Description("结构体")]
Struct = 3,
/// <summary>
/// 枚举
/// </summary>
[Description("枚举")]
Enum = 4,
/// <summary>
/// 字符串
/// </summary>
[Description("字符串")]
String = 5,
/// <summary>
/// 数组
/// </summary>
[Description("数组")]
Array = 6,
/// <summary>
/// List
/// </summary>
[Description("List")]
List = 7,
/// <summary>
/// 字典
/// </summary>
[Description("字典")]
Dictionary = 8,
/// <summary>
/// ArrayList
/// </summary>
[Description("ArrayList")]
ArrayList = 9,
/// <summary>
/// 是否是集合类型
/// </summary>
[Description("是否是集合类型")]
IEnumerable = 10,
/// <summary>
/// 字典类型
/// </summary>
[Description("字典类型")]
IDictionary = 11,
/// <summary>
/// 匿名类型
/// </summary>
[Description("匿名类型")]
Anonymous = 12,
/// <summary>
/// DataTable
/// </summary>
[Description("DataTable")]
DataTable = 13,
/// <summary>
/// 其它
/// </summary>
[Description("其它")]
Other = 20
}
字符串匹配提取
用法实例
IsMatch 当前扩展方法 主要是 当前字符串是否匹配上正则表达式,比如,匹配当前字符串是否是QQ号码,代码如下:
if("7092734".IsMatch(@"^\d{5-11}$"))
Console.WriteLine("是QQ号码格式.");
else
Console.WriteLine("非QQ号码格式.");
输出结果为:是QQ号码格式. 因为 字符串 "7092734"确实是QQ号码。
IsNotMatch 当前方法其实就是 !IsMatch,用法和IsMatch用法一样。 Match 当前扩展方法返回的是Match,使用指定的匹配选项在输入字符串中搜索指定的正则表达式的第一个匹配项。 Matches 当前扩展方法返回的是使用指定的匹配选项在指定的输入字符串中搜索指定的正则表达式的所有匹配项。
这三个方法是最原始最底层的方法,其它扩展都基于当前三个方法中的一个或两个来实现的。
GetMatch 扩展方法返回结果是:提取符合模式的数据所匹配的第一个匹配项所匹配的第一项或a组的数据
GetPatterns 扩展方法返回结果是:提取符合模式的数据所有匹配的第一项数据或a组数据
GetMatchs 扩展方法返回结果是:提取符合模式的数据所匹配的第一项中所有组数据
GetMatches 扩展方法返回结果是:提取符合模式的数据所有匹配项或所有组数据
提取的数据量对比:GetMatch < GetMatchs < GetPatterns <
Related Skills
feishu-drive
354.0k|
things-mac
354.0kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
354.0kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
