public static bool TryParse <TEnumeration>(Func <TEnumeration, bool> predicate, out TEnumeration enumeration) where TEnumeration : Enumeration { enumeration = GetAll <TEnumeration>().FirstOrDefault(predicate); if (!(enumeration is null)) { return(true); } enumeration = ClassConstructionHelper.Construct <TEnumeration>(null, null); return(false); }
public static bool TryParse <TEnumeration>(Func <TEnumeration, bool> predicate, int defaultValue, out TEnumeration enumeration) where TEnumeration : Enumeration { enumeration = GetAll <TEnumeration>().FirstOrDefault(predicate); if (!(enumeration is null)) { return(true); } var types = new[] { typeof(int), typeof(string) }; var values = new object[] { defaultValue, null }; enumeration = ClassConstructionHelper.Construct <TEnumeration>(types, values); return(false); }
public static IEnumerable <TEnumeration> GetAll <TEnumeration>() where TEnumeration : Enumeration { var type = typeof(TEnumeration); var fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); foreach (var info in fields) { var instance = ClassConstructionHelper.Construct <TEnumeration>(null, null); if (info.GetValue(instance) is TEnumeration locatedValue) { yield return(locatedValue); } } }