Приветствую, всезнающий All!
Имеется иерархия: простой базовый класс (практически без методов, одни свойства). Также есть несколько интерфейсов, расширяющих его функциональность, которые проявятся в наследниках. Имплементировать их в базе не хочу, так как её наследников надо будет динамически различать по реализованным интерфейсам. При написании интерфейса контейнера возникла проблема: не могу достучатся до защищённого члена базового класса. Демонстрирую пример:
public class Item
{
protected Composite Owner;
}
public interface IComposite
{
void Add(Item item);
}
public class Composite : Item, IComposite
{
public void Add(Item item)
{
item.Owner = this;//Вылезает Compiler Error CS1540
}
}
CS1540=Cannot access protected member 'Item.Owner' via a qualifier of type 'Item'; the qualifier must be of type 'Composite' (or derived from it).
Смысл эррора понятен — не может обратиться к защищенному члену через екземпляр класса Item. В Делфи, помню, такое проходило — protected предка = public для потомка.
Настоящий Composite GoF на Шарпе реализуется. Но мне надо именно вышеуказанную иерархию построить. Как реализовать такое на С#? Или это слишком "вольно" для строго типизированного языка?
-- Вишаю преразбестнейшие регарды, Silentor.
...Are you a Lich: The nearby city keeps sending priests to 'talk' with you.
Posted via RSDN NNTP Server 1.9