Если объект является Универсальным Списком

var path = require('path');

Попробуйте установить каталог для публики следующим образом.

app.set('view_engine', 'ejs');
app.set('views', path.join(__dirname,'/views'))

Он получит каталог проекта и установит путь просмотра.

14
задан Blair Conrad 30 October 2008 в 00:21
поделиться

5 ответов

Это возвратится "Верный"

List<int> myList = new List<int>();

Console.Write(myList.GetType().IsGenericType && myList is IEnumerable);

, Вы хотите знать, точно ли это - "Список"... или соглашается Вы с ним являющийся IEnumerable и Универсальный?

23
ответ дан 1 December 2019 в 08:20
поделиться

Следующий метод возвратит тип изделия типа универсального набора. Если тип не реализует ICollection<> затем пустой указатель возвращается.

static Type GetGenericCollectionItemType(Type type)
{
    if (type.IsGenericType)
    {
        var args = type.GetGenericArguments();
        if (args.Length == 1 &&
            typeof(ICollection<>).MakeGenericType(args).IsAssignableFrom(type))
        {
            return args[0];
        }
    }
    return null;
}

Редактирование: вышеупомянутое решение предполагает, что указанный тип имеет универсальный собственный параметр. Это не будет работать на типы та реализация ICollection<> с твердым кодированным универсальным параметром, например:

class PersonCollection : List<Person> {}

Вот новая реализация, которая обработает этот случай.

static Type GetGenericCollectionItemType(Type type)
{
    return type.GetInterfaces()
        .Where(face => face.IsGenericType &&
                       face.GetGenericTypeDefinition() == typeof(ICollection<>))
        .Select(face => face.GetGenericArguments()[0])
        .FirstOrDefault();
}
7
ответ дан 1 December 2019 в 08:20
поделиться

Попытка:

if(yourList.GetType().IsGenericType)
{
  var genericTypeParams = yourList.GetType().GetGenericArguments;
  //do something interesting with the types..
}
2
ответ дан 1 December 2019 в 08:20
поделиться

Theres GetType () функционируют в Системе. Класс объекта. Вы попробовали это?

-1
ответ дан 1 December 2019 в 08:20
поделиться

Вопрос неоднозначен.

ответ зависит от того, что Вы подразумеваете под универсальным списком.

  • А List< SomeType>?

  • класс А, который происходит из List< SomeType>?

  • класс А, который реализует IList< SomeType> (в этом случае массив может считаться универсальным списком - например, интервал [] реализует IList< int>)?

  • класс А, который универсален и реализует IEnumerable (это является тестом, предложенным в принятый ответ )? Но это будет также полагать, что следующий довольно патологический класс универсальный список:

.

public class MyClass<T> : IEnumerable
{
    IEnumerator IEnumerable.GetEnumerator()
    {
        return null;
    }
}

лучшее решение (например, использовать ли GetType, IsAssignableFrom, и т.д.) будет зависеть от того, что Вы имеете в виду.

0
ответ дан 1 December 2019 в 08:20
поделиться