У меня есть вопрос относительно повышения событий базового класса. Я в настоящее время чтения MSDN C# Руководство по программированию, и я не могу понять одну вещь из следующей статьи:Почему событие базового класса вызывает частный метод?
http://msdn.microsoft.com/en-us/library/vstudio/hy3sefw3.aspx
public void AddShape(Shape s)
{
_list.Add(s);
s.ShapeChanged += HandleShapeChanged;
}
OK, поэтому мы регистрируем делегата с событием, и мы будем называя частный способ HandleShapeChanged когда событие поднято.
public void Update(double d)
{
radius = d;
area = Math.PI * radius * radius;
OnShapeChanged(new ShapeEventArgs(area));
}
protected override void OnShapeChanged(ShapeEventArgs e)
{
base.OnShapeChanged(e);
}
И здесь мы вызываем метод базового класса OnShapeChanged, который, в успех, будет срабатывать событие. Но событие основано на классе Shape, поэтому как он может получить доступ к методу HandleShapeChanged, который является частным?
Я только начал изучать язык, поэтому, пожалуйста, несите меня. Мое понимание этого примера может быть вполне целеустремленным.
Возможный дубликат [Вопрос об инкапсуляции с делегатами?] (Http://stackoverflow.com/questions/15586728/encapsulation-issue-with-delegates). Цитируя принятый ответ Эрика Липперта: «Домен доступности метода не ограничивает способ вызова метода. Он ограничивает способ поиска метода по имени». – Brian