Я бы хотел написать следующий код:
// contains 500 entries
IList<string> longListOfStrings = ...
// shorterListsOfStrings is now an array of 5 IList<string>,
// with each element containing 100 strings
IList<string>[] shorterListsOfStrings = longListOfStrings.Split(5);
Для этого мне нужно создать общий метод расширения с именем Split
, который выглядит примерно так:
public static TList[] Split<TList>(this TList source, int elementCount)
where TList : IList<>, ICollection<>, IEnumerable<>, IList, ICollection, IEnumerable
{
return null;
}
Но когда я пытаюсь это скомпилировать, компилятор говорит мне, что IList<>
, ICollection<>
и IEnumerable<>
требуют аргумента типа. Итак, я изменил определение на следующее:
public static TList<TType>[] Split<TList<TType>>(this TList<TType> source, int elementCount)
where TList : IList<TType>, ICollection<TType>, IEnumerable<TType>, IList, ICollection, IEnumerable
{
return null;
}
но затем компилятор жалуется, что не может найти тип TList
. У меня есть идея, что я слишком усложняю вещи, но я не понимаю, как ... любая помощь ценится!