/// <summary> /// Parses a Easing type string. /// </summary> /// <param name="e">The Easing type string.</param> /// <returns>Returns the instance of the parsed type.</returns> public static Easing Parse(string e) { if (e.Contains(',')) { return(new SplineEasing(KeySpline.Parse(e, CultureInfo.InvariantCulture))); } if (_easingTypes == null) { _easingTypes = new Dictionary <string, Type>(); // Fetch the built-in easings. var derivedTypes = typeof(Easing).Assembly.GetTypes() .Where(p => p.Namespace == s_thisType.Namespace) .Where(p => p.IsSubclassOf(s_thisType)) .Select(p => p).ToList(); foreach (var easingType in derivedTypes) { _easingTypes.Add(easingType.Name, easingType); } } if (_easingTypes.ContainsKey(e)) { var type = _easingTypes[e]; return((Easing)Activator.CreateInstance(type)); } else { throw new FormatException($"Easing \"{e}\" was not found in {s_thisType.Namespace} namespace."); } }
/// <summary> /// Parses a Easing type string. /// </summary> /// <param name="e">The Easing type string.</param> /// <returns>Returns the instance of the parsed type.</returns> public static Easing Parse(string e) { #if NETSTANDARD2_0 if (e.Contains(",")) #else if (e.Contains(',')) #endif { return(new SplineEasing(KeySpline.Parse(e, CultureInfo.InvariantCulture))); } return(TryCreateEasingInstance(e, out var easing) ? easing : throw new FormatException($"Easing \"{e}\" was not found in {Namespace} namespace.")); }