public interface Test
{
A Name { get; set; }
}
я разве при реализации не могу объявить B Name, где B наследник A?
тут только через дженерики и ковариантность?
нет не можешь из за сета)
свойствам вообще не дает по причине выше
В реализации если нет set, то можно засунуть внутрь что угодно, но тип свойства менять нельзя Т.е. можно сделать вида Interface { get { return new Implementation(); }}
а чем дженерики не нравятся?
Тык я хотел в интерфейсе написать IEnumerable, а при реализации заюзать List, а так нельзя, надо городить
Так можно. Но Вы не такое пробовали до этого сделать)
interface Int { IEnumerable<int> Ids { get; } } class Impl : Int { private readonly List<int> List = new List<int>(); public IEnumerable<int> Ids => this.List; }
Ну вот, это все равно через доп св-ва) т.е. городить
Это нормально, это не городить, это вы скрываете реализацию)
interface Int<T> { T Ids { get; } } class Impl : Int<List<int>> { List<int> Ids { get; } } Но выглядит хуже)
Обсуждают сегодня