using System; using System.Collections.Generic; using System.Linq; namespace BITKit { public static class FuncExtensions { public static IEnumerable> CastAsFunc(this Func self) { var value = self; return value is null? Array.Empty>() : self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc(this Func self) { return self is null ? Array.Empty>() : self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc(this Func self) { if (self is null) { yield break; } Delegate[] invocationList = self.GetInvocationList(); // 遍历委托数组,将每个委托转换为 Func 并返回 foreach (var delegateItem in invocationList) { if (delegateItem is not null && delegateItem is Func func) { yield return func; } } } public static IEnumerable> CastAsFunc(this Func self) { return self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc( this Func self) { return self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc( this Func self) { return self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc( this Func self) { return self?.GetInvocationList().Cast>(); } public static IEnumerable> CastAsFunc( this Func self) { return self?.GetInvocationList().Cast>(); } } }