Фильтрация и подсчет записей за каждый час, за последние 24 часа с определенной даты

Это старый вопрос, но я тоже столкнулся с этим. Мне нравится ответ @ Igoy, но он не работает, если тип представляет собой массив типа NULL. Это мой метод расширения для обработки любой комбинации значений NULL / generic и array. Надеюсь, это будет полезно кому-то с тем же вопросом.

public static string GetDisplayName(this Type t)
{
    if(t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>))
        return string.Format("{0}?", GetDisplayName(t.GetGenericArguments()[0]));
    if(t.IsGenericType)
        return string.Format("{0}<{1}>",
                             t.Name.Remove(t.Name.IndexOf('`')), 
                             string.Join(",",t.GetGenericArguments().Select(at => at.GetDisplayName())));
    if(t.IsArray)
        return string.Format("{0}[{1}]", 
                             GetDisplayName(t.GetElementType()),
                             new string(',', t.GetArrayRank()-1));
    return t.Name;
}

Это будет обрабатывать такие сложные задачи, как это:

typeof(Dictionary<int[,,],bool?[][]>).GetDisplayName()

Возвраты:

Dictionary<Int32[,,],Boolean?[][]>
0
задан Ronald Langeveld 17 January 2019 в 11:50
поделиться