1 回答
TA贡献1854条经验 获得超8个赞
这是我能够实现目标的一种方式。我不确定这是不是这样做的正确方法。
我如何实现我的目标是使用 EventHandler。
为 AncSubscriberWrapper 类创建一个接口(IAncSubscriberWrapper)
public interface IAncSubscriberWrapper
{
event EventHandler UnshownNotificationCounterUpdated;
}
并像下面那样实现它
public class AncSubscriberWrapper : NotificationCenterFacade, IAncSubscriberWrapper
然后实现AncSubscriberWrapper类里面的接口成员
public event EventHandler UnshownNotificationCounterUpdated;
并在 OnUnshownCounterUpdatedAsync 方法中调用方法
public Task OnUnshownCounterUpdatedAsync(long counter)
{
UnshownNotificationCounterUpdated?.Invoke(this, null);
return Task.CompletedTask;
}
然后去 BasePageViewModel 注册和注销监听器。
public void Initialize()
{
m_ancSubscriberWrapper.UnshownNotificationCounterUpdated += OnUnshownNotificationCounterUpdated;
}
public void Teardown()
{
m_ancSubscriberWrapper.UnshownNotificationCounterUpdated -= OnUnshownNotificationCounterUpdated;
}
由于 BasePageViewModel 是一个抽象类,任何使用它的具体类都会覆盖这些方法。(下面的代码片段与这个问题没有直接关系,而是为了理解我的代码基础上的设计)
/*
* BaseContainerViewController is only accepting TPageViewModel generic type of classes only.
* TPageViewModel inherits BasePageViewModel and BaseContainerViewController inherits BaseViewController
* That's what following line is all about
*/
public abstract class BaseContainerViewController<TPageViewModel> : BaseViewController where TPageViewModel : BasePageViewModel
和
public class WardListViewController : BaseContainerViewController<WardListPageViewModel>
回到答案的最后一部分。在 BasePageViewModel 类中添加以下方法,这将完成该过程。
protected virtual void OnUnshownNotificationCounterUpdated(object sender, EventArgs eventArgs)
{
GetUnseenNotificationsCount();
}
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
