какой тип параметра принимает и List, и DataRowCollection и может быть индексируемым и нумерованным? - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу написать метод, у которого есть параметр, который принимает значения List<T> и DataRowCollection в качестве значения и может быть индексируемым и пронумерованным, но я не знаю, как это сделать. Возможно ли это с доступными классами и интерфейсами?

Спасибо & BR - матти

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Нельзя указать ограничение типа, например where T : [], и нет универсального интерфейса для свойства индексатора. List и DataRowCollection оба - IEnumerable и ICollection, но я предполагаю, что это вас не сильно выиграет. Поэтому нет, невозможно указать что-то вроде «Тип должен быть индексируемой коллекцией».

Обновление : я только что увидел, что DataRowCollection имеет свойство List, которое возвращает коллекцию как ArrayList, что является IList. Итак, если вы хотите написать метод расширения, вы можете настроить его на IList

Обновление 2 : еще один вариант: вы можете нацелиться на IEnumerable и использовать Linq ElementAt(). Не уверен, что он будет использовать свойство индекса для DataRowCollection.

0 голосов
/ 27 апреля 2011

Оба List<T> и DataRowCollection агрегат IEnumerable и ICollection, поэтому вы можете использовать любой из них в зависимости от того, чтометод должен сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...