/
krasninja
/
querycat
Обзор
Документация
Войти
/
krasninja
/
querycat
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/QueryCat.Backend/TypeUtils.cs
38 строк
1002 B
Ivan Kozhin
Refactor object selector set logic
17 май 2024, 12:39
17 май 2024, 12:39
082f4e0
Код
Авторство
О чём код?
using System.Collections; namespace QueryCat.Backend; /// <summary> /// Type utils. /// </summary> internal static class TypeUtils { internal static Type GetUnderlyingType(object obj) => GetUnderlyingType(obj.GetType()); /// <summary> /// Returns element type for array, value type for dictionary, list type for list. /// </summary> /// <param name="type">Type to get underlying type.</param> /// <returns>Underlying type or current if not generic.</returns> internal static Type GetUnderlyingType(Type type) { if (type.IsArray) { return type.GetElementType()!; } if (type.IsGenericType) { if (typeof(IDictionary).IsAssignableFrom(type)) { return type.GetGenericArguments()[1]; } if (typeof(IEnumerable).IsAssignableFrom(type)) { return type.GetGenericArguments()[0]; } } return type; } }