Re: Зачем нужно наследование интерфейсов?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 06.07.12 20:02
Оценка: +2
ВВ> Что это дает-то в принципе? На первый взгляд кажется, что это вообще скорее вредно.

в mainstream-языках это дает возможность статически проверять типы при возвращении интерфейса

если интерфейсы отнаследованы друг от друга
interface IEnumerable{ void Foo();}
interface ICollection:IEnumerable{void Bar();}

то функция возвращая ICollection, предоставит статически проверяемую возможность обратиться как к методам ICollection, так и к методам IEnumerable
ICollection GetItems(){..}

var items = GetItems();
items.Foo();
items.Bar();


если же интерфейсы независимы
interface IEnumerable{ void Foo();}
interface ICollection{void Bar();}

то функция сможет вернуть только или IEnumerable, или ICollection, и придется явно кастить, чтобы получить доступ к другому интерфейсу

ICollection GetItems(){..}

var items = GetItem();
((IEnumerable)items).Foo();
items.Bar();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.