我正在尝试通过创建自己的 WeakEventManager来实现msdn之后的 WeakEventManager。
我的问题是现在我有一个StaticPublisher
发布静态事件的静态类OnSomeStaticEvent
。
我想从另一个班级订阅这个活动。这是我现在拥有的代码(简化):
public static class StaticPublisher
{
//definition of static event
public static event EventHandler<CancelEventArgs> OnSomeStaticEvent;
public static void OnSomeStaticEventHandler(CancelEventArgs e)
{
EventHandler<CancelEventArgs> handlerCopy = OnVisualDisplayBeforeRemoved;
if (handlerCopy != null)
handlerCopy(null, e);
}
}
我的 WeakEventManager 看起来像这样(再次遵循 msdn):
class OnSomeStaticEventWeakEventManager : WeakEventManager
{
private OnSomeStaticEventWeakEventManager ()
{
}
/// <summary>
/// Add a handler for the given source's event.
/// </summary>
public static void AddHandler(StaticPublisher, EventHandler<CancelEventArgs> handler)
{
if (source== null)
throw new ArgumentNullException("source");
if (handler == null)
throw new ArgumentNullException("handler");
CurrentManager.ProtectedAddListener(source, handler);
}
// more code follows down. but is all relative to this part
我的问题是我无法向此事件添加任何侦听器,因为我不允许StaticPublisher
作为论点屈服。这里有什么解决方法吗?我真的可以在这里使用一些帮助......