public static TCast GetItemOfType <TSource, TCast>(this LockList <TSource> lockList) where TCast : Il2CppSystem.Object where TSource : Il2CppSystem.Object { TCast cast = null; var result = lockList.FirstOrDefault(item => item.IsType(out cast)); return(cast); // Switching to new Linq extension /*if (!HasItemsOfType<TSource, TCast>(lockList)) * return null; * * for (int i = 0; i < lockList.Count; i++) * { * TSource item = lockList[i]; * try * { * if (item.TryCast<TCast>() != null) * return item.TryCast<TCast>(); * } * catch (Exception) { } * } * * return null;*/ }