首次提交

This commit is contained in:
Bob.Song
2026-03-05 18:07:55 +08:00
commit e125bb869e
4534 changed files with 563920 additions and 0 deletions

View File

@@ -0,0 +1,285 @@
using System;
using System.IO;
namespace NBC
{
/// <summary>
/// 一些基础类型的扩展
/// </summary>
public static class BasicValueExtension
{
/// <summary>
/// 是否相等
///
/// 示例:
/// <code>
/// if (this.Is(player))
/// {
/// ...
/// }
/// </code>
/// </summary>
/// <param name="selfObj"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool Is(this object selfObj, object value)
{
return selfObj == value;
}
public static bool Is<T>(this T selfObj, Func<T, bool> condition)
{
return condition(selfObj);
}
/// <summary>
/// 表达式成立 则执行 Action
///
/// 示例:
/// <code>
/// (1 == 1).Do(()=>XLog.Log("1 == 1");
/// </code>
/// </summary>
/// <param name="selfCondition"></param>
/// <param name="action"></param>
/// <returns></returns>
public static bool Do(this bool selfCondition, Action action)
{
if (selfCondition)
{
action();
}
return selfCondition;
}
/// <summary>
/// 不管表达成不成立 都执行 Action并把结果返回
///
/// 示例:
/// <code>
/// (1 == 1).Do((result)=>XLog.Log("1 == 1:" + result);
/// </code>
/// </summary>
/// <param name="selfCondition"></param>
/// <param name="action"></param>
/// <returns></returns>
public static bool Do(this bool selfCondition, Action<bool> action)
{
action(selfCondition);
return selfCondition;
}
}
/// <summary>
/// 通用的扩展,类的扩展
/// </summary>
public static class ClassExtention
{
/// <summary>
/// 功能:判断是否为空
///
/// 示例:
/// <code>
/// var simpleObject = new object();
///
/// if (simpleObject.IsNull()) // 等价于 simpleObject == null
/// {
/// // do sth
/// }
/// </code>
/// </summary>
/// <param name="selfObj">判断对象(this)</param>
/// <typeparam name="T">对象的类型(可不填)</typeparam>
/// <returns>是否为空</returns>
public static bool IsNull<T>(this T selfObj) where T : class
{
return null == selfObj;
}
/// <summary>
/// 功能:判断不是为空
/// 示例:
/// <code>
/// var simpleObject = new object();
///
/// if (simpleObject.IsNotNull()) // 等价于 simpleObject != null
/// {
/// // do sth
/// }
/// </code>
/// </summary>
/// <param name="selfObj">判断对象this)</param>
/// <typeparam name="T">对象的类型(可不填)</typeparam>
/// <returns>是否不为空</returns>
public static bool IsNotNull<T>(this T selfObj) where T : class
{
return null != selfObj;
}
public static void DoIfNotNull<T>(this T selfObj, Action<T> action) where T : class
{
if (selfObj != null)
{
action(selfObj);
}
}
}
/// <summary>
/// 泛型工具
///
/// 实例:
/// <code>
/// 示例:
/// var typeName = GenericExtention.GetTypeName<string>();
/// typeName.LogInfo(); // string
/// </code>
/// </summary>
public static class GenericUtil
{
/// <summary>
/// 获取泛型名字
/// <code>
/// var typeName = GenericExtention.GetTypeName<string>();
/// typeName.LogInfo(); // string
/// </code>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static string GetTypeName<T>()
{
return typeof(T).ToString();
}
}
/// <summary>
/// 对 System.IO 的一些扩展
/// </summary>
public static class IOExtension
{
/// <summary>
/// 检测路径是否存在,如果不存在则创建
/// </summary>
/// <param name="path"></param>
public static string CreateDirIfNotExists4FilePath(this string path)
{
var direct = Path.GetDirectoryName(path);
if (!Directory.Exists(direct))
{
Directory.CreateDirectory(direct);
}
return path;
}
/// <summary>
/// 创建新的文件夹,如果存在则不创建
/// <code>
/// var testDir = "Assets/TestFolder";
/// testDir.CreateDirIfNotExists();
/// // 结果为,在 Assets 目录下创建 TestFolder
/// </code>
/// </summary>
public static string CreateDirIfNotExists(this string dirFullPath)
{
if (!Directory.Exists(dirFullPath))
{
Directory.CreateDirectory(dirFullPath);
}
return dirFullPath;
}
/// <summary>
/// 删除文件夹,如果存在
/// <code>
/// var testDir = "Assets/TestFolder";
/// testDir.DeleteDirIfExists();
/// // 结果为,在 Assets 目录下删除了 TestFolder
/// </code>
/// </summary>
public static void DeleteDirIfExists(this string dirFullPath)
{
if (Directory.Exists(dirFullPath))
{
Directory.Delete(dirFullPath, true);
}
}
/// <summary>
/// 清空 Dir保留目录),如果存在。
/// <code>
/// var testDir = "Assets/TestFolder";
/// testDir.EmptyDirIfExists();
/// // 结果为,清空了 TestFolder 里的内容
/// </code>
/// </summary>
public static void EmptyDirIfExists(this string dirFullPath)
{
if (Directory.Exists(dirFullPath))
{
Directory.Delete(dirFullPath, true);
}
Directory.CreateDirectory(dirFullPath);
}
/// <summary>
/// 删除文件 如果存在
/// <code>
/// // 示例
/// var filePath = "Assets/Test.txt";
/// File.Create("Assets/Test);
/// filePath.DeleteFileIfExists();
/// // 结果为,删除了 Test.txt
/// </code>
/// </summary>
/// <param name="fileFullPath"></param>
/// <returns> 是否进行了删除操作 </returns>
public static bool DeleteFileIfExists(this string fileFullPath)
{
if (File.Exists(fileFullPath))
{
File.Delete(fileFullPath);
return true;
}
return false;
}
/// <summary>
/// 合并路径
/// <code>
/// // 示例:
/// Application.dataPath.CombinePath("Resources").LogInfo(); // /projectPath/Assets/Resources
/// </code>
/// </summary>
/// <param name="selfPath"></param>
/// <param name="toCombinePath"></param>
/// <returns> 合并后的路径 </returns>
public static string CombinePath(this string selfPath, string toCombinePath)
{
return Path.Combine(selfPath, toCombinePath);
}
}
/// <summary>
/// 类型扩展
/// </summary>
public static class TypeEx
{
/// <summary>
/// 获取默认值
/// </summary>
/// <param name="targetType"></param>
/// <returns></returns>
public static object DefaultForType(this Type targetType)
{
return targetType.IsValueType ? Activator.CreateInstance(targetType) : null;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ac644ae7280c4a65ae705cb0e4dd782d
timeCreated: 1680837299