Я прототипирования какое-то хранилище, и я хочу знать, если это достаточно, чтобы иметь методы, которые работают на последовательностейтолько.C# IQueryable или AsQueryable
Например:
public void AddEntities<T>(IQueryable<T> sequence);
Теперь этот метод прототип кажется хорошо и действительно родовое, но это отстой, когда кто-то хочет сделать что-то вроде:
var t = new T();
// Add just a single entity.
repository.AddEntities(???);
Какие решения для этого случая?
Должен ли я сделать свой интерфейс больше и добавить методы, как AddSingleEntity<T>(T t)
и RemoveSingleEntity<T>(T t)
или я должен оставить его как есть и использовать что-то вроде:
repository.AddEntities(new List { new T() }.AsQueryable());
Оба варианта, очевидно, имеет свои недостатки: первые делают интерфейс уродливый и менее компактный, второй просто выглядит немного странно.
Что вы будете делать и почему?
Список был разработан, прежде чем дженериков, так что если кто-то назвал '.Add()' с массивом, нет никакого способа для списка, чтобы знать, если вы хотите добавить все e элементов в массиве в список или добавить сам массив в список. В случае дженериков отдельные методы не нужны, потому что 'Add (T t)' и 'Add (IEnumerable t)' недвусмысленны. –
+1 для вашего редактирования, однако (хотя я бы переключил вызовы вокруг, так что вам не нужно вызывать '.ToArray()') –
на самом деле я говорю об общем списке, но html скрыть мой. , мои примеры не из списка, а то, что он мог реализовать в своем репо –
Guillaume86