C#: Проблема доступа потомка к защищённому члену параметра-р
От: Silentor Украина  
Дата: 09.02.05 22:24
Оценка:
Приветствую, всезнающий 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.