我有一个接口 INetworkAware 并且需要声明将强制每个类注册事件的方法
目前使用 prisms eventtaggregator 我们的实现如下。
protected override void SetupEvents()
{
RegisterForEvent<PatientSelected>(OnPatientSelected);
base.SetupEvents();
}
SetupEvents 方法在 ViewModelbase 类中被声明为 virtual。在这种情况下,我们希望拥有上面提到的 INetworkAware 接口,除了从 ViewModelBase 派生之外,如果任何类有兴趣监听网络变化(网络离线/在线)并实现 INetworkAware 接口,我们希望有机制来强制他们为此注册事件使用相同的主体。例如,如果我们创建类
public class PatientInformationViewModel : ViewModelBase, INetworkAware
{
protected override void SetupEvents()
{
RegisterForEvent<PatientSelected>(OnPatientSelected);
base.SetupEvents();
}
INetworkAware.ListenForNetworkChange
{
RegisterForEvent<NetworkChangeEvent>(OnNetworkChange)
}
OnNetworkChange(NetworkChangeEvent networkstatus)
{
}
}
NetworkChangeEvent 是一个示例 POCO 类
INetworkAware.ListenForNetworkChange 和 OnNetworkChange(NetworkChangeEvent networkstatus) 必须在派生自 INetworkaware 并具有相同签名的每个视图模型中实现。
我们怎样才能完成这个场景