1

我正在尝试通过创建自己的 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作为论点屈服。这里有什么解决方法吗?我真的可以在这里使用一些帮助......

4

0 回答 0