
扩展方法
命名空间:
ZhonTai.Common.Extensions
提供 DateTime、List、Enum、object 等类型的常用扩展方法。
DateTimeExtension 日期时间扩展
应用场景
- 时间戳与 DateTime 互转
- 获取中文星期
使用示例
csharp
using ZhonTai.Common.Extensions;
// DateTime 转时间戳(秒级)
var timestamp = DateTime.Now.ToTimestamp();
// 1700000000
// DateTime 转时间戳(毫秒级)
var timestampMs = DateTime.Now.ToTimestamp(milliseconds: true);
// 1700000000000
// 获取中文星期
var week = DateTime.Now.GetWeekName();
// "周一"ListExtension 列表扩展
应用场景
- 平级数据转树形结构(菜单、组织架构)
- 树形结构转平级列表
- 列表深度克隆
使用示例
csharp
using ZhonTai.Common.Extensions;
// 平级列表转树形结构
var tree = flatList.ToTree(
rootWhere: (parent, child) => parent == null && child.ParentId == 0,
childsWhere: (parent, child) => parent.Id == child.ParentId,
addChilds: (parent, childs) => parent.Children = childs.ToList()
);
// 树形转平级列表
var flatList = tree.ToPlainList(x => x.Children);
// 深度克隆列表
var cloned = list.Clone();EnumExtension 枚举扩展
应用场景
- 获取枚举的
[Description]特性值 - 枚举转下拉选项列表
使用示例
csharp
using ZhonTai.Common.Extensions;
public enum Status
{
[Description("启用")]
Enabled = 1,
[Description("禁用")]
Disabled = 2
}
// 获取枚举描述
var desc = Status.Enabled.ToDescription();
// "启用"
// 获取枚举名称+描述
var nameDesc = Status.Enabled.ToNameWithDescription();
// "Enabled(启用)"
// 枚举转数值
var value = Status.Enabled.ToInt64();
// 1
// 枚举转下拉列表
var list = Status.Enabled.ToList();
// [{"Label": "启用", "Value": 1}, {"Label": "禁用", "Value": 2}]
// 泛型方式(不需要实例)
var list2 = EnumExtension.ToList<Status>();UtilConvertExtension 类型转换扩展
应用场景
object安全转换为各种类型- 数据库字段值转换
- 字节数组与 16 进制/Base64 互转
使用示例
csharp
using ZhonTai.Common.Extensions;
object value = "123";
// 基础类型转换
var i = value.ToInt(); // 123
var l = value.ToLong(); // 123
var f = value.ToFloat(); // 123.0
var d = value.ToDouble(); // 123.0
var dec = value.ToDecimal(); // 123
var b = value.ToBool(); // false
var date = value.ToDateTime();
// 带默认值的转换
var money = "abc".ToMoney(0.0); // 0.0
var str = null.ToString("默认值"); // "默认值"
// 保留小数位
var d2 = "3.14159".ToDouble(2); // 3.14
// byte[] 转换
var bytes = new byte[] { 0x12, 0x34 };
var hex = bytes.ToHex(); // "1234"(默认小写)
var hex2 = bytes.ToHex(false); // "1234"(大写)
var b64 = bytes.ToBase64(); // "EjQ="
// 16进制字符串转 byte[]
var bytes2 = "1234".HexToBytes();
// 时间戳转 DateTime
var dt = 1700000000L.ToDateTime();