Один не может иметь интерфейс, который является сотрудничества варианта по отношению к T
и включает в себя Add
метода, который принимает тип T
, так как тот, который будет означать, что сборник, который был способен принимать любой тип из Dog
был способен принятия любого типа Animal
. Можно было определить Contra вариант интерфейса IFeedable<in T>
с методом Feed
, который принял параметр типа T
(я предпочитаю «подавать» на «добавить», поскольку последний термин также может ссылаться на арифметическую операцию, а так как существование объект, который может принимать объекты и что-то делать с ними, не означает, что эти объекты добавляются в какую-то коллекцию, например, можно легко получить класс фильтрации, который принял IFeedable<T>
и Predicate<T>
и реализовал IFeedable<T>
, взяв каждый T
он был задан, называется предикатной функцией и передал элемент в поставленный IFeedable<T>
только в том случае, если предикат возвратил true. Данные, данные для такого метода, не обязательно будут «добавлены» к любому виду коллекции, но тем не менее будут «поданы» "to t он объектно реализует интерфейс.