103 lines
2.6 KiB
C#
103 lines
2.6 KiB
C#
|
|
|
||
|
|
using System;
|
||
|
|
|
||
|
|
namespace Stary.Evo
|
||
|
|
{
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
[ClassAPI("01.FluentAPI.CSharp", "System.Object", 0)]
|
||
|
|
[APIDescriptionCN("针对 System.Object 提供的链式扩展,理论上任何对象都可以使用")]
|
||
|
|
[APIDescriptionEN("The chain extension provided by System.object can theoretically be used by any Object")]
|
||
|
|
#endif
|
||
|
|
public static class SystemObjectExtension
|
||
|
|
{
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
// v1 No.1
|
||
|
|
[MethodAPI]
|
||
|
|
[APIDescriptionCN("将自己传到 Action 委托中")]
|
||
|
|
[APIDescriptionEN("apply self to the Action delegate")]
|
||
|
|
[APIExampleCode(@"
|
||
|
|
new GameObject()
|
||
|
|
.Self(gameObj=>gameObj.name = ""Enemy"")
|
||
|
|
.Self(gameObj=>{
|
||
|
|
Debug.Log(gameObj.name);
|
||
|
|
});"
|
||
|
|
)]
|
||
|
|
#endif
|
||
|
|
public static T Self<T>(this T self, Action<T> onDo)
|
||
|
|
{
|
||
|
|
onDo?.Invoke(self);
|
||
|
|
return self;
|
||
|
|
}
|
||
|
|
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
// v1 No.1.1
|
||
|
|
[MethodAPI]
|
||
|
|
[APIDescriptionCN("将自己传到 Func<T,T> 委托中,然后返回自己")]
|
||
|
|
[APIDescriptionEN("apply self to the Func<T,T> delegate")]
|
||
|
|
[APIExampleCode(@"
|
||
|
|
new GameObject()
|
||
|
|
.Self(gameObj=>gameObj.name = ""Enemy"")
|
||
|
|
.Self(gameObj=>{
|
||
|
|
Debug.Log(gameObj.name);
|
||
|
|
});"
|
||
|
|
)]
|
||
|
|
#endif
|
||
|
|
public static T Self<T>(this T self, Func<T,T> onDo)
|
||
|
|
{
|
||
|
|
return onDo.Invoke(self);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
// v1 No.2
|
||
|
|
[MethodAPI]
|
||
|
|
[APIDescriptionCN("判断是否为空")]
|
||
|
|
[APIDescriptionEN("Check Is Null,return true or false")]
|
||
|
|
[APIExampleCode(@"
|
||
|
|
var simpleObject = new object();
|
||
|
|
|
||
|
|
if (simpleObject.IsNull()) // simpleObject == null
|
||
|
|
{
|
||
|
|
// do sth
|
||
|
|
}")]
|
||
|
|
#endif
|
||
|
|
public static bool IsNull<T>(this T selfObj) where T : class
|
||
|
|
{
|
||
|
|
return null == selfObj;
|
||
|
|
}
|
||
|
|
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
// v1 No.3
|
||
|
|
[MethodAPI]
|
||
|
|
[APIDescriptionCN("判断不是为空")]
|
||
|
|
[APIDescriptionEN("Check Is Not Null,return true or false")]
|
||
|
|
[APIExampleCode(@"
|
||
|
|
var simpleObject = new object();
|
||
|
|
|
||
|
|
if (simpleObject.IsNotNull()) // simpleObject != null
|
||
|
|
{
|
||
|
|
// do sth
|
||
|
|
}")]
|
||
|
|
#endif
|
||
|
|
public static bool IsNotNull<T>(this T selfObj) where T : class
|
||
|
|
{
|
||
|
|
return null != selfObj;
|
||
|
|
}
|
||
|
|
|
||
|
|
#if UNITY_EDITOR
|
||
|
|
// v1 No.36
|
||
|
|
[MethodAPI]
|
||
|
|
[APIDescriptionCN("转型")]
|
||
|
|
[APIDescriptionEN("cast")]
|
||
|
|
[APIExampleCode(@"
|
||
|
|
int a = 10;
|
||
|
|
Debug.Log(a.As<float>())
|
||
|
|
// 10
|
||
|
|
")]
|
||
|
|
#endif
|
||
|
|
public static T As<T>(this object selfObj) where T : class
|
||
|
|
{
|
||
|
|
return selfObj as T;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|