Есть некоторые предметы, которые приходят от этого вопроса:
- интерфейсов против классов
- какой конкретный класса, от нескольких классов, так, коллекции, списка, массива?
- Общие классы против подпункта («дженерики») коллекции
Вы можете подчеркнуть, что сво объектно-ориентированного A.P.I.
интерфейсы против классов
Если у вас нет большого опыта работы с интерфейсами, я рекомендую придерживаться классов. Я вижу много раз разработчиков, прыгающих на интерфейсы, даже если это не обязательно.
И, конец делает плохой дизайн интерфейса, а, хороший дизайн класса, который, кстати, может в конечном счете, быть перенесен на хороший дизайн интерфейса ...
Вы увидите много интерфейсов в API, но, не спешите с ним, , если вам это не нужно.
В конечном итоге вы научитесь применять интерфейсы к вашему коду.
какой конкретный класс, из нескольких классов, коллекции, списка, массива?
Существует несколько классов в C# (dotnet), которые могут быть взаимозаменяемы. Как уже упоминалось, если вам нужно что-то из более конкретного класса, например «CanBeSortedClass», то сделайте его явным в вашем A.P.I ..
Имеет ли ваш A.P.I. пользователь действительно должен знать, что ваш класс может быть отсортирован или применить какой-то формат к элементам? Затем используйте «CanBeSortedClass» или «ElementsCanBePaintedClass», , иначе используйте «GenericBrandClass».
В противном случае используйте более общий класс.
Общие классы коллекций против подпункта («дженериков») коллекции
Вы найдете, что есть классы, которые содержат другие элементы, и вы можете указать, что все элементы должны быть из определенного типа.
Общих Коллекции являются теми классами, которые вы можете использовать тот же набор, для нескольких приложений коды, без необходимости создавать новую коллекцию, для каждого нового типа пп, как это: Коллекции.
Есть ли у вас A.P.I. пользователю нужен очень специфический тип, такой же для всех элементов?
Используйте что-то наподобие List<WashingtonApple>
.
Есть ли у вас A.P.I. пользователю понадобится несколько родственных типов?
Expose List<Fruit>
для A.P.I., и использовать List<Orange>
List<Banana>
, List<Strawberry>
внутри, где Orange
, Banana
и Strawberry
являются потомками Fruit
.
Есть ли у вас A.P.I. пользователю понадобится коллекция универсального типа?
Использовать List
, где все предметы object
(s).
Cheers.
дубликат: http: // stackoverflow.com/questions/271710/collectiont-versus-listt-what-should-you-use-on-your-interfaces – Robbie
также: http://stackoverflow.com/questions/4455428/difference-between-iqueryable-icollection-ilist- idictionary-interface – nathanchere