Я всегда ставил код ниже в первых двух строках файлов python:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
Я использовал события, чтобы сигнализировать, когда последовательный порт получил данные.
Вот мой интерфейс.
public interface ISerialPortWatcher
{
event EventHandler<ReceivedDataEventArgs> ReceivedData;
event EventHandler StartedListening;
event EventHandler StoppedListening;
SerialPortSettings PortOptions { set; }
bool Listening { get; set; }
void Stop();
void Start();
}
public class ReceivedDataEventArgs : EventArgs
{
public ReceivedDataEventArgs(string data)
{
Data = data;
}
public string Data { get; private set; }
}
Отличным примером в .NET Framework является интерфейс INotifyPropertyChanged . Этот интерфейс состоит только из одного члена: события PropertyChanged .
В WPF вы можете указать, что элемент управления будет отображать определенное свойство экземпляра объекта. Но как этот элемент управления обновится, если изменится базовое свойство?
Если связанный объект реализует интерфейс INotifyPropertyChanged , среда WPF может просто прослушать PropertyChanged и обновить соответствующим образом.
Вот один из примеров
public interface IMainAppWindow
{
event EventHandler Closed;
}
// version 1 main window
public MainForm : Form , IMainAppWindow
{
}
// version 2 main window
public MainWindow : Window , IMainAppWindow
{
event EventHandler Closed;
public void OnClosed(object sender,RoutedEventArgs e)
{
if(Closed != null)
{
Closed(this,e);
}
}
}
У меня есть такой код в одном из моих приложений. Приложение было написано в winforms, а затем обновлено до WPF.
События в интерфейсах работают почти так же, как методы. Вы можете использовать их так же, как и любой другой интерфейс.
public interface IInterface {
event EventHandler QuestionAsked;
}
public class Class : IInterface {
event EventHandler QuestionAsked;
//As with typical events you might want an protected OnQuestionAsked
}
Классическим сценарием является паттерн MVP с пассивным представлением. Форма реализует интерфейс представления, который имеет событие NameChanged. Презентатор, который создает / использует представление, подписывается на это событие. При изменении текста имени в текстовом поле это событие запускается. Затем докладчик уведомляется. Поскольку докладчик знает о событии только из интерфейса представления, вы можете предоставить имитирующее представление для тестирования. Представление полностью отделено от ведущего.
INotifyPropertyChanged используется в рамках.
Просто посмотрите на событие INotifyPropertyChanged.PropertyChanged
.