using System; using System.Collections; using System.Linq; namespace BITKit { public static class MathO { public static T As(this object self) { // { // if (typeof(T) == typeof(object[])) // { // var o = new object[1]; // o[0] = self; // return o as T; // } // } // { // if (self is object[] { Length: 1 } o) // { // return o[0] as T; // } // } try { return (T)self; } catch (InvalidCastException) { if(self.GetType().IsArray && typeof(T).IsArray && self is IEnumerable enumerable) { var newArray = Array.CreateInstance(typeof(T).GetElementType()!, enumerable.Cast().Count()); var i = 0; foreach (var x in enumerable) { newArray.SetValue(x, i++); } if (newArray is T newValue) { return newValue; } } throw; } } } }