Я изучаю события и делегатов и начал с нескольких событий сейчас. Только то, что документы не предоставляют никакой информации или примера кода для инициирования событий, определенных таким образом. Ниже вы можете найти простой пример
Пример кода
public class Person
{
private string _name;
private string _phone;
public string Name
{
get { return _name; }
set
{
_name = value;
}
}
public string Phone
{
get { return _phone; }
set
{
_phone = value;
}
}
protected EventHandlerList EventDelegateCollection = new EventHandlerList();
//define the event key
static readonly object PhoneChangedEventKey = new object();
public event EventHandler PhoneChanged
{
add
{
EventDelegateCollection.AddHandler(PhoneChangedEventKey, value);
}
remove
{
EventDelegateCollection.RemoveHandler(PhoneChangedEventKey, value);
}
}
}
Я хотел бы поднять событие, когда номер телефона установлен. если что-то звучит странно и не понимаю, о чем я говорю см. здесь
Обновление
Я хотел бы прояснить некоторые сомнения здесь. Существует два способа подписки и вызова обработчиков событий классическим шаблоном (, как описано здесь ), где выполняются шаги
- Определить делегат, который действует как подпись для подписанных методов.
- Определить событие, которое делегирует
- Определите метод, который вызывает обработчики
note:
метод выше создает поле для каждого события, следовательно, потребляет больше памяти ссылка
Событие недвижимости - это еще один способ, где вы делаете ниже
- Определить объект, который действует как ключ к событию
- Определить метод для добавления и удаления обработчиков для события из списка вызовов событий
- Вызывать событие, определяя обработчики событий на основе ключа события