跳至主要內容

基础库

azrngnuget大约 9 分钟

Common.Core

操作

ObjectExtensions

模型类转url参数格式(1.0.5)

var userInfo = new UserInfoDto { Id = 1, Name = "Test", };
// 参数不转小写
var result = userInfo.ToUrlParameter();// Id=1&Name=Test
// 参数转小写
var result = userInfo.ToUrlParameter(true);// id=1&name=Test

版本更新记录

  • 1.1.2
    • 更新时间扩展,增加 DateTime?.ToDateString、DateTime?.ToStandardString
    • 将一部分方法抽离到DateTimeHelper中,防止扩展污染
  • 1.1.1
    • 增加默认无参数的ToStandardString
    • 增加将时间转年月日:ToDateString
    • 增加Guard帮助类,使用方法比如Guard.Against.Null("输入值", "参数名");
    • 增加Console的输出ReadLineWithPrompt、ReadKeyWithPrompt
    • 增加ApplicationHelper应用程序帮助类
    • 将LongHelper改名为NumberHelper
    • 增加获取无时区的当前时间
  • 1.1.0
    • 优化ResultModel类,增加Failure方法
  • 1.0.10
    • 增加AsyncHelper执行同步方法
    • 移除获取时间戳弃用的方法
    • 增加CollectionHelper支持分页批次处理数据
    • 增加FileHelper.FormatFileSize
  • 1.0.9
    • 获取特殊文件夹之桌面文件路径
    • 增加检查文件是否被其他进程锁定方法
    • 增加获取NTP网络远程时间
    • 增加系统操作:获取本机ip、ipv4地址、ipv6地址
    • 增加MimeExtensions扩展
  • 1.0.8
    • 升级支持.net8
  • 1.0.7
    • 更新ICurrentUser默认为string类型UserId
  • 1.0.6
    • 增加程序集扩展方法和程序集帮助类以及获取所有程序集的方法
    • 增加枚举帮助类EnumHelper,迁移枚举扩展中部分方法到枚举帮助类中
    • 枚举扩展类中方法GetDescriptionString改名GetDescription
  • 1.0.5
    • 增加Random的NextDouble扩展方法
    • 支持框架net6.0;net7.0
  • 1.0.4
    • 迁移base64的扩展到StringExtension,并且改名为ToBase64Encode、FromBase64Decode
    • 增加时间段和时间点相互转换代码
    • 增加ExceptionExtension、DecimalExtension、DoublelExtension
  • 1.0.3
    • 增加任务运行时间限制方法,TaskHelper.RunTimeLimitAsync

    • 增加字符串输出扩展

  • 1.0.2
    • 增加本地日志文件操作类
  • 1.0.1
    • 引用Newtonsoft.Json包,增加json操作扩展
    • 将扩展方法的命名空间改为Common.Extension
  • 1.0.0
    • 将common中的部分类移动到该类库中

Common

介绍

常见的公共类封库,继承自Common.Core

操作

扩展类

字符串扩展
//判断字符串是否是数值类型
bool IsIntFormat(this string str)
// 判断字符串是否是decimal类型
bool IsDecimalFormat(this string str)
//判断字符串是否是日期类型
bool IsDateFormat(this string str)
//判断字符串是否包含中文
bool HasChinese(this string str)
//判断字符串不是  null、空和空白字符
bool IsNotNullOrWhiteSpace(this string currentString)
//判断字符串 是  null、空和空白字符
bool IsNullOrWhiteSpace(this string currentString)
//判断字符串是  null、空
bool IsNullOrEmpty(this string currentString)
//判断字符串不是  null、空
bool IsNotNullOrEmpty(this string currentString)
//字符串分割成字符串数组
string[] ToStrArray(this string str, string separator = ",")
//根据条件拼接字符串
StringBuilder AppendIF(this StringBuilder builder, bool condition, string str)
//获取特定位置的字符串
string GetByIndex(this string str, int index)
//忽略大小写的字符串比较
bool EqualsNoCase(this string aimStr, string comparaStr)
时间扩展
//获取这个月第一天
DateTime GetThisMonth(this DateTime dateTime)

//获取下个月第一天
DateTime GetNextMonth(this DateTime dateTime)

//获取最后一个月一号
DateTime GetLastMonth(this DateTime dateTime)

//获取今天凌晨0时
DateTime GetToday(this DateTime dateTime)

//获取今天晚上23:59:59
DateTime GetTodayEndTime(this DateTime dateTime)

//获取昨天零时
DateTime GetYesterday(this DateTime dateTime)

//获取明天零时
DateTime GetTomorrow(this DateTime dateTime)

//获取时间戳(true:获取秒 false:获取毫秒)
long GetUnixTime(bool isSeconds);//DateTimeOffset

//时间戳转本地时间-时间戳精确到秒
var datetime1 = unixSecond.ToLocalTimeDateBySeconds();

//时间转时间戳Unix-时间戳精确到秒
var unixSecond2 = DateTime.Now.ToUnixTimestampBySeconds();//DateTime

//获取毫秒时间戳
var unixMillisecond = TimeExtensions.GetUnixTimeMilliseconds();//DateTimeOffset
//时间转时间戳Unix-时间戳精确到毫秒
var unixMillisecond2 = DateTime.Now.ToUnixTimestampByMilliseconds();//DateTime

//时间转时间戳Unix-时间戳精确到秒
var datetime2= unixMillisecond.ToLocalTimeDateByMilliseconds();

//当前时间是否周末
bool IsWeekend(this DateTime dateTime)

//当前时间是否是工作日
bool IsWeekday(this DateTime dateTime)

//自定义时间格式,默认返回返回格式:2019-01-21 20:57:51
string ToStandardString(this DateTime time, string format)

//自定义时间格式,默认返回返回格式:2019-01-21 20:57:51
string ToStandardString(this DateTime time)
Json扩展
//对象转json字符串
string ToJson(this object obj)
//对象转json字符串
string ToJson(this object obj, string datetimeFormats)
//json字符串转对象
T ToObject<T>(this string json)
//json字符串转list
List<T> ToList<T>(this string json)
//json字符串转DataTable
DataTable ToTable(this string json)
//json字符串转JObject
JObject ToJObject(this string json)
Decimal扩展
//自定义格式,默认返回返回格式:1.01
string ToDecimalStandardString(this decimal dec, int number)
// 自定义格式,默认返回返回格式:1.01
string ToDecimalStandardString(this decimal dec)
//自定义格式,不保留小数点后的0
string ToDecimalNoZeroString(this decimal dec, int number = 1)
Enumerable扩展
//检查集合是null或者空
bool IsNullOrEmpty<T>(this IEnumerable<T> source)

//检查集合不是null或者空
bool IsNotNullOrEmpty<T>(this IEnumerable<T> source)

//带条件的where
IQueryable<T> WhereIF<T>(this IQueryable<T> source, bool condition, Expression<Func<T, bool>> predicate)

//带条件的where
IEnumerable<T> WhereIF<T>(this IEnumerable<T> source, bool condition, Func<T, bool> predicate)
枚举扩展
//获取枚举描述
string GetDescriptionString(this Enum enumItem)
//根据Description获取枚举值
T GetEnumValue<T>(string description)
// 获取字段Description
DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo)
//枚举转字典
Dictionary<int, string> EnumToDictionary<T>() where T : Enum
DataTable扩展
//IList To DataTable
DataTable ToDataTable(this IList list, bool hasColumns = true)

//List To DataTable
DataTable ToDataTable<T>(this List<T> list, bool hasColumns = true)

//将List追加到其他DataTable
DataTable ToDataTable(this IList list, DataTable table, bool hasColumns = true)
编码扩展
//获取字符串里面的URL地址
string GetUrl(this string str)

//UrlEncode
string UrlEncode(this string target)
string UrlEncode(this string target, Encoding encoding)

//UrlDecode
string UrlDecode(this string target)
string UrlDecode(this string target, Encoding encoding)

//AttributeEncode
string AttributeEncode(this string target)

//HtmlEncode
string HtmlEncode(this string target)
string HtmlDecode(this string target)
Base64扩展
//Base64编码,采用utf8编码方式加密
string Base64Encode(this string source)

//Base64解密,采用utf8编码方式解密
string Base64Decode(this string result)

//Base64编码
string Base64Encode(Encoding encodeType, string source)

//Base64解码
string Base64Decode(Encoding encodeType, string result)
集合扩展
 bool IsNullOrEmpty<T>(this ICollection<T> source) //检查集合是否存在元素

帮助类

公共帮助类
//根据时间自动生成编号  201008251145409865
string CreateNo()
//生成0-9随机数
string RndNum(int codeNum)
随机数(示例:e/6LMJB+zyHK6iCcgOAZgu7dkE9fvBkAbAIy3pIE3RY=)
//string GenerateRandomNumber(int len)
MyHttpContext帮助类

需要提前注册:MyHttpContext.ServiceProvider=xxxServiceProvider

//获取HttpContext
MyHttpContext.Current
Session帮助类

使用SessionHelper需要提前注册MyHttpContext.ServiceProvider

//设置session
void SetSession(string key, string value)
void SetSession<T>(string key, T value)

//获取Session
string GetSession(string key)
T GetSession<T>(string key)

//移除session
void Remove(params string[] keys)
表达式树
PredicateExtensions.True
编码操作类
//字符串转Unicode码
string StringToUnicode(string value)
//Unicode转字符串
string UnicodeToString(string unicode)
HTML
//将HTML标签转换成TEXT文本
string HtmlToText(string strHtml)
汉字转拼音

PinYinHelper

//汉字转化为大写拼音
string GetPinyinQuanPin(string str)

//汉字转化为拼音大写首字母
string GetFirstPinyin(string str)
雪花Id
Snowflake snowflake = new Snowflake();
// snowflake.Sequence = 10;//设置序列
var id = snowflake.NewId();//获取下一个ID
Console.WriteLine(id);
Console.WriteLine(snowflake.NewId(DateTime.Now.AddDays(1)));//获取指定时间的Id,带上节点和序列号。可用于根据业务时间构造插入Id
Console.WriteLine(snowflake.GetId(DateTime.Now.AddDays(1)));//时间转为Id,不带节点和序列号。可用于构建时间片段查询
var flag = snowflake.TryParse(id, out DateTime time, out int worlId, out int sequence);//尝试分析
Console.WriteLine($"time:{time} workId:{worlId} sequence:{sequence}");

输出结果

6900931916313923585
6901294304267603970
6901294304266813440
time:2022/2/19 22:39:41 workId:193 sequence:1
性能检测

来自老赵的性能检测帮助类

CodeTimerHelper
配置读取

首先先配置IConfiguration

//.net6之前
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
    Configuration = configuration;
    Env = env;

    AppSettings.InitConfiguration(configuration);
}
// .net6
AppSettings.InitConfiguration(builder.Configuration);

使用方法

var name = AppSettings.GetValue("Service:Name");
var name = AppSettings.GetValue<string>("Service:Name");
公共返回类

封装了公共的返回类

IResultModel
IResultModel<T>
ResultModel:IsSuccess、Code、Message、Errors
ResultModel<T>:IsSuccess、Code、Message、Data

属性描述

IsSuccess:是否成功
Code:状态码
Data:返回的数据
Errors:模型校验的错误信息

返回正确的方法

[HttpGet]
public IResultModel<IEnumerable<WeatherForecast>> Get()
{
    var result = Enumerable.Range(1, 3).Select(index => new WeatherForecast
    {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
    })
    .ToArray();
    return ResultModel<IEnumerable<WeatherForecast>>.Success(result);
}

返回的示例效果

{
  "data": [
    {
      "date": "2022-05-20T22:13:35.2501522+08:00",
      "temperatureC": 52,
      "temperatureF": 125,
      "summary": "Freezing"
    },
    {
      "date": "2022-05-21T22:13:35.2505438+08:00",
      "temperatureC": 4,
      "temperatureF": 39,
      "summary": "Balmy"
    },
    {
      "date": "2022-05-24T22:13:35.250546+08:00",
      "temperatureC": 7,
      "temperatureF": 44,
      "summary": "Hot"
    }
  ],
  "isSuccess": true,
  "code": "200",
  "message": "success",
  "errors": []
}

返回错误的效果

[HttpGet]
public IResultModel<IEnumerable<WeatherForecast>> Get()
{
    return ResultModel<IEnumerable<WeatherForecast>>.Error("参数为空", "400");
}

返回结果

{
  "data": null,
  "isSuccess": false,
  "code": "400",
  "message": "参数为空",
  "errors": []
}
依赖注入批量注册

需要注册的实现类继承指定的接口,比如用户实现类

public class UserService : IScopedDependency, IUserService

也可以继承自:ITransientDependency、ISingletonDependency,根据自己需求不同继承合适声明周期的接口

批量注入示例

services.RegisterBusinessServices("MySQL_NetCoreAPI_EFCore.dll");
或者
services.RegisterBusinessServices("MySQL_NetCoreAPI_EFCore.*.dll");

// 1.4.2 版本后支持传入程序集数组
services.RegisterBusinessServices(assembly);
IO帮助类

增加创建文件、目录、xml等操作

版本更新记录

  • 1.4.3

    • 迁移ServiceCollectionExtension到Common.Mvc
  • 1.4.2

    • RegisterBusinessServices扩展方法增加重载
  • 1.4.1

    • 将Newtonsoft.Json转入core包

    • 将json序列化等操作转入core包

  • 1.4.0-beta6

    • 将部分无依赖的类移动到Common.Core中
  • 1.4.0-beta5

    • 更新时间扩展类,移除TimeExtensions合并到DateTimeExtensions
  • 1.4.0-beta4

    • 增加获取无时区时间的方案ToUnspecifiedDateTime
  • 1.4.0-beta3

    • 修改CurrentUser默认注入

    • 修改ToDateTimeString支持传入时间格式

  • 1.4.0-beta2

    • 修改CurrentUser为DefaultUser
  • 1.4.0-beta1

    • 升级支持.net7
  • 1.3.0-beta10

    • 增加IsLongFormat、ToInt64
  • 1.3.0-beta9

    • 增加appsettings、cron帮助类、HttpContextManager、HttpContextExtensions、ServiceProviderHelper、SessionHelper、ICurrentUser、BaseService
  • 1.3.0-beta8

    • 增加生成验证码的方法,CommonHelper.GenerateVerifyCode
  • 1.3.0-beta7

    • 人信息扩展
    • 正则扩展
    • 增加性能检测帮助类CodeTimerHelper
  • 1.3.0-beta6

    • 优化扩展方法命名空间,正规化
    • 增加汉字获取拼音全拼和首字母方法
  • 1.3.0-beta5

    • 将一些mvc里面的公共类迁移出来,干净common
  • 1.3.0-beta4

    • 更新session帮助类
    • 增加DataTableExtensions
    • 更新时间扩展类
    • 增加HttpContextExtensions
    • 修改md5哈希算法
    • 增加sha哈希算法
  • 1.3.0-beta3

    • 增加BaseRequestDto重载
  • 1.3.0-beta2

    • 修复BaseRequestDto<T>导致UserIdentity出错问题
  • 1.3.0-beta1

    • 支持.Net6版本
    • 更新Operator支持主键设置类型
  • 1.2.8

    • 更新字符串Null值校验
    • 增加雪花ID算法
  • 1.2.7

    • 增加.NetCore默认DI容器的批量注入方法
  • 1.2.6

    • 移除分页的相关的类
    • 增加依赖注入的类
  • 1.2.5

    • 增加生成随机数的方法
    • 增加时间戳和本地时间相互转换方法
    • 增加集合扩展
    • 增加日期扩展
    • 增加浮点数扩展
    • 增加枚举扩展类
    • 增加html帮助类
    • 增加字符串扩展类
    • 增加表达式树
    • 本次发版修改了请求类和返回类,查询包可能会受影响
  • 1.2.4

    • 更新GetQueryPageRequest、GetPageInfoRequest、SortContent增加构造函数
  • 1.2.3

    • 更新公共分页返回类
  • 1.2.2

    • 更新返回类封装,支持使用静态方法使用
  • 1.2.1

    • 更新异常类增加扩展方法
    • 修改异常监听类名称
  • 1.2.0

    • 增加枚举根据描述获取枚举值
  • 1.1.6

    • 更新net5包版本 更新OperatorProvider
  • 1.1.5

    • 配置多个目标框架,支持net5
  • 1.1.4

    • 增加分页请求类
  • 1.1.3

    • 增加layui的数据表格返回类
  • 1.1.2

    • 修改des加密方法
  • 1.1.1

    • 修改json目录,增加字符串扩展方法
  • 1.1.0

    • 修改md5加密方法
  • 1.0.3

    • 修改加密方法
  • 1.0.2

    • 增加时间公共类
  • 1.0.1

    • 修改一些文件的命名空间
  • 1.0.0

    • 基本的公共库
上次编辑于:
贡献者: azrng,zhangyunpeng