Получить содержавший тип в Списке <T> посредством отражения?

Если у вас есть группа захвата ((...)) в регулярном выражении, которое вы передаете .split, захваченный текст возвращается как часть результата. Вот почему у вас есть "1", "2" и т. Д. Между "Item ".

Помимо некоторого варианта решения @Ori Dori , вы также можете решить это с помощью прогнозного утверждения (?=...), которое является не захватывающей конструкцией.

var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = string.split(/(?=Item)/);
console.log(arr);

Это будет работать, разбивая строку непосредственно перед любым появлением текста "Item".


Для более грубого решения без использования регулярных выражений:

var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = [];
var i = string.indexOf('Item', 1);
while (i >= 0) {
  arr.push(string.substr(0, i));
  string = string.substr(i);
  i = string.indexOf('Item', 1);
}
arr.push(string);
console.log(arr);

12
задан abatishchev 5 July 2011 в 14:33
поделиться

2 ответа

Принятие Вас имеет System.Type который описывает Ваш List<>, можно использовать Type.GetGenericArguments() метод для получения Type экземпляр, который описывает то, из чего это является список.

27
ответ дан 2 December 2019 в 05:16
поделиться

что-то вроде этого?

foreach (System.Reflection.PropertyInfo info 
                                       in typeof(BusinessEntity).GetProperties())
{
    if (info.PropertyType.IsGenericType &&
        info.PropertyType.Name.StartsWith("IList") &&
        info.PropertyType.GetGenericArguments().Length > 0 &&
        info.PropertyType.GetGenericArguments()[0] == typeof(string)
        )
    {
        return true;
    }
}
2
ответ дан 2 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: