Примерно так:
те предположим, что у меня есть бизнес-кейс, я хочу использовать некоторую модель для представления структуры master-child. И будут определенные классы, наследуемые как от мастер-класса, так и от дочернего класса.
Я использую образец ниже
public abstract class BaseChild
{
public int MyProperty { get; set; }
}
public abstract class BaseMaster
{
public abstract ReadOnlyCollection<BaseChild> Children { get; }
}
Теперь мне нужны реальные классы, чтобы наследовать от них. Так что следуйте
public class FirstRealChild : BaseChild
{
public int AdditionalProperty { get; set; }
}
public class FirstRealMaster : BaseMaster
{
public ReadOnlyCollection<FirstRealChild> Children { get; }
}
Конечно, он не скомпилируется из-за ошибки
«FirstRealMaster» не реализует унаследованный абстрактный член «BaseMaster.Children.get»
Я могу удалитьpublic abstract ReadOnlyCollection<BaseChild> Children { get; }
отBaseMaster
класс, но он теряет ограничение для всех унаследованных классов, которые требуются дочерние.
У кого-нибудь есть идея получше?