首次提交
This commit is contained in:
285
Assets/Scripts/NBC/Core/Runtime/Extensions/CSharpExtension.cs
Normal file
285
Assets/Scripts/NBC/Core/Runtime/Extensions/CSharpExtension.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac644ae7280c4a65ae705cb0e4dd782d
|
||||
timeCreated: 1680837299
|
||||
Reference in New Issue
Block a user