DotNetCommon.VerifyCode
8.0.0
dotnet add package DotNetCommon.VerifyCode --version 8.0.0
NuGet\Install-Package DotNetCommon.VerifyCode -Version 8.0.0
<PackageReference Include="DotNetCommon.VerifyCode" Version="8.0.0" />
paket add DotNetCommon.VerifyCode --version 8.0.0
#r "nuget: DotNetCommon.VerifyCode, 8.0.0"
// Install DotNetCommon.VerifyCode as a Cake Addin #addin nuget:?package=DotNetCommon.VerifyCode&version=8.0.0 // Install DotNetCommon.VerifyCode as a Cake Tool #tool nuget:?package=DotNetCommon.VerifyCode&version=8.0.0
DotNetCommon
介绍
搜集.neter开发常用的功能,运行环境: net8.0;
QQ交流群:864844127
主要包版本:
包 | 版本 | 下载 | License |
---|---|---|---|
DotNetCommon | |||
DotNetCommon.Core | |||
DotNetCommon.PinYin | |||
DotNetCommon.Compress |
各个包关系如下图:
说明:
DotNetCommon包 具有所有功能,引用了其他的各个功能包;
DotNeCommon.Core 是核心包,有大量常用的方法,不依赖任何包;
DotNetCommon.PinYin 是汉字转拼音包,从
https://github.com/toolgood/ToolGood.Words.Pinyin
搬运;DotNetCommon.Window.Registry 是操作window注册表,里面就一个
RegistryHelper.cs
;DotNetCommon.VerfiyCode 是生成验证码的,从 csdn博文:SkiaSharp 生成验证码 .net6 生成验证码 处搬运;
.net6之后,System.Drawing.Common包已被标记为Window平台下专用,所以此功能依赖
SkiaSharp
,这个包是跨平台的,微软在维护。DotNetCommon.Compress是压缩/解压缩的,里面就一个
CompressHelper.cs
;
功能列表
- 通用数据模型;
- 通用树状结构&平铺数据的访问;
- 通用代码块上下文模型
- 通用数据类型转换之Object.To方法;
- 通用Dto间转换之Object.Mapper扩展;
- 递归篡改对象的属性值之Modify扩展;
- 将Dto属性投影到Entity之ModifyByDto扩展;
- 校验框架;
- 防抖函数生成器;
- 编码和加解密;
- 序列化;
- 汉字转拼音;
- 压缩&解压缩;
- 注册表;
- 验证码生成;
- 随机数;
- 对象池;
- 断言工具值AssertUtil;
- 快速反射工具(Accessor);
- 图片格式尺寸检测工具之ImageDetector;
- 通用资源释放工具;
- 网络帮助类;
- 单位转换器(B/KB/MS/GB);
- 金额大小写转换;
- 枚举类型扩展方法;
- 常用扩展方法;
- 中文乱码检测(GBK or UTF-8);
- 读取Properties文件;
- 通用日志Logger;
- 代理流(AgentStream);
- 异步锁(AsyncLocker);
- 表达式帮助类(ExpressionHelper);
- 对象(poco)深度克隆;
- 通用国际化简易框架;
更多功能介绍
查看:https://gitee.com/jackletter/DotNetCommon/tree/master/docs
快速开始
1.安装包
dotnet add package DotNetCommon
2. 引入命名空间
using DotNetCommon;
using DotNetCommon.Extensions;
3. 功能示例
3.1 数据模型
public Result<Person> GetUserById(int id)
{
if (id < 0) return Result.NotOk("id必须大于0!");
//...
return Result.Ok(new Person());
}
3.2 加解密
public void EncryptTest()
{
var sensitiveData = "机密数据";
var key = "12345678";
//加密
var res = DESHelper.Encrypt(sensitiveData, key);
//解密
var res2= DESHelper.Decrypt(res, key);
}
3.3 对象(poco)深度克隆
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public List<Person> Students { get; set; }
}
public void Test()
{
//没有循环引用的深度克隆
var list = new List<Person>()
{
new Person { Id = 1, Name = "lisa"},
new Person
{
Id = 2,
Name = "tom",
Students = new List<Person>
{
new Person{ Id = 3, Name = "jack" }
};
},
};
list.DeepClone(false);
//存在循环引用的深度克隆
var list2 = new List<Person>()
{
new Person { Id = 1, Name = "lisa"},
new Person { Id = 2, Name = "tom"},
};
list2[0].Students = new List<Person>{ list2[0] };
list2.DeepClone(false);
}
3.4 序列化
/// <summary>
/// 指定常用的设置,序列化为json字符串(使用 System.Text.Json)
/// </summary>
/// <param name="obj"></param>
/// <param name="dateTimeFormatString">日期时间格式(DateTime)</param>
/// <param name="dateTimeOffsetFormatString">日期时间格式(DateTimeOffset)</param>
/// <param name="dateOnlyFormatString">日期时间格式(DateOnly)</param>
/// <param name="timeOnlyFormatString">日期时间格式(TimeOnly)</param>
/// <param name="ignoreNull">是否忽略null值的属性</param>
/// <param name="enum2String">是否将枚举转换为字符串</param>
/// <param name="lowerCamelCase">属性名称的首字母是否小写</param>
/// <param name="lowerCamelCaseDictionaryKey">字典key首字母是否小写</param>
/// <param name="isIntend">是否格式缩进</param>
/// <param name="number2String">是否将数字转为字符串</param>
/// <param name="ignoreJsonPropertyName">是否忽略注解: [JsonPropertyName("xxxx")]</param>
/// <param name="otherSettings">其他的设置</param>
/// <remarks>注意: 虽然提供了 <c>lowerCamelCase</c> 和 <c>lowerCamelCaseDictionaryKey</c>, 但没有办法将 <c>JsonObject</c> 中的key首字母小写</remarks>
public static string ToJsonFast(this object obj,
string dateTimeFormatString = null,
string dateTimeOffsetFormatString = null,
string dateOnlyFormatString = null,
string timeOnlyFormatString = null,
bool ignoreNull = false,
bool enum2String = false,
bool lowerCamelCase = false,
bool lowerCamelCaseDictionaryKey = false,
bool isIntend = false,
bool number2String = false,
bool ignoreJsonPropertyName = false,
Action<JsonSerializerOptions> otherSettings = null)
/// <summary>
/// 对已有的 <c>JsonSerializerOptions</c> 进行配置,以增强兼容性,可用在 web开发中,如:
/// <code>
/// services.AddControllers().AddJsonOptions(options =>JsonHelper.Configure(options.JsonSerializerOptions, dateTimeFormatString: "yyyy-MM-dd", lowerCamelCase: true));
/// </code>
/// </summary>
public static void Configure(JsonSerializerOptions options,
string dateTimeFormatString = null,
string dateTimeOffsetFormatString = null,
string dateOnlyFormatString = null,
string timeOnlyFormatString = null,
bool enum2String = false,
bool ignoreNull = false,
bool lowerCamelCase = false,
bool lowerCamelCaseDictionaryKey = false,
bool isIntend = false,
bool number2String = false,
bool ignoreJsonPropertyName = false,
Action<JsonSerializerOptions> otherSettings = null)
3.5 压缩&解压缩
//压缩多个文件
CompressHelper.CompressZip("c:/test.zip", new Dictionary<string, string>
{
{"中文B222.txt","c:/testfolder/中文B.txt" },
{"testsubfolder/suba222.txt","c:/testfolder/testsubfolder/testsubfolder-suba.txt" },
{"testfolder-a.txt","c:/testfolder/testfolder-a.txt" }
});
//压缩目录
CompressHelper.CompressZipFolder("c:/test.zip", "c:/testfolder");
//解压缩 支持 zip/7z/rar/gz/bz2/tar.gz/tar.bz2
CompressHelper.UnCompress("c:/testfolder.7z"), "c:/testfolder");
CompressHelper.UnCompress("c:/testfolder.tar.gz"), "c:/testfolder2");
3.6 类似AutoMapper的转换
public class Cat
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birth { get; set; }
}
public class CatDto
{
public int Id { get; set; }
public string Name { get; set; }
public int Age
{
get
{
return DateTime.Now.Year - Birth.Year;
}
}
public DateTime Birth { get; set; }
}
//转换示例
var cat = new Cat()
{
Id = 1,
Name = "小明",
Birth = DateTime.Parse("1989-01-02"),
Age = 20
};
var dto = cat.Mapper<CatDto>();
dto.ShouldNotBeNull();
dto.Id.ShouldBe(1);
dto.Name.ShouldBe("小明");
dto.Age.ShouldNotBe(20);
3.7 类FluentValidation校验组件
//Service层方法,添加实体
public Result<bool> AddStudent(Teacher teacher)
{
var res = VValid.ValidResult(teacher);
if (!res.Success) return res;
//...新增操作
return Result.Ok(true);
}
public class Teacher
{
[VMustGreaterThanZero]
public int Id { get; set; }
[VMustIdCard("身份证号不正确")]
public string IdCard { get; set; }
[DisplayName("姓名")]
[VNotNullOrWhiteSpace]
public string Name { get; set; }
[VMustGreaterThanZeroIfNotNull]
[VMustLessThanIfNotNull(200)]
public int? Age { get; set; }
[VEach(typeof(VLengthInRangeAttribute), [2, 4])]
[VNotNullOrEmpty]
public List<string> StudentNames { get; set; }
[VMustMatchRegexIfNotNull("^[^0][0-9]{10}$", "qq号不正确")]
public string QQ { get; set;}
[VNotNullOrEmpty]
[VEach(typeof(VNotNull))]
public List<Book> Books { get; set; }
}
public class Book
{
[VMustGuid(format:"N", ignoreCase:false, errorMessage:"书籍UUID不正确, 正确格式: [a-f|0-9]{32,32}")]
public string UUID { get; set; }
[VNotNullOrWhiteSpace]
public string Name { get; set; }
}
3.8 注册表
public void Test2()
{
var path = @"HKEY_CURRENT_USER\TestApplication\Res";
//判断是否存在
RegistryHelper.Exists(path);
//删除项
RegistryHelper.DeletePath(path);
//设置值
RegistryHelper.SetString(path, "name", "小明");
//读取值
var name = RegistryHelper.GetString(path, "name");
}
更多介绍,参考:https://gitee.com/jackletter/DotNetCommon/tree/master/docs
Product | Versions 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. |
-
net8.0
- SkiaSharp (>= 3.116.1)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 3.116.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DotNetCommon.VerifyCode:
Package | Downloads |
---|---|
DotNetCommon
.net常用功能及数据模型,包含: - 压缩/解压缩(CompressHelper) - 注册表操作(RegistryHelper) - 验证码(VerifyCodeHelper) - 汉字转拼音(WordsHelper) - 数据模型: Result - 通用代码块上下文模型: RunningContext.Current - 编码加解密(DES/AES/RSA/SHA256/MD5/Base64UrlSafe) - 通用数据类型转换方法Object.To() - 对象(poco)转换方法Object.Mapper(); - 对象(poco)深度克隆方法Object.DeepClone(); - 树状结构数据操作(ToFlat/FetchToTree/Visit/Filter) - json序列化(Object.ToJsonFast/ToJson) - Validation功能的校验组件(VValid) - 异步锁(AsyncLocker) - 图片检测(图片格式/图片尺寸)(ImageDetector) - 防抖函数(DebounceUtil) - 各种常用扩展 - 中文乱码检测(LuanMaHelper) - 国际化(I18N) - 通用日志组件(LoggerFactory) - *.properties 文件读取(PropertiesHelper) - 异步锁(AsyncLocker) - 等等。。。 |
GitHub repositories
This package is not used by any popular GitHub repositories.