Windows 运行时从其他库引发事件

Windows Runtime raise events from other library

我有一个库 A,它有一些事件,我在我自己的库 B 中使用这个库,然后我有我的 Windows 运行时应用程序,它只引用了库 B。

当库 A 引发事件时,我想在我的 Windows 运行时应用程序项目中捕获此事件。

有办法吗?

您可以在 Windows 运行时应用程序中引用库 A,因为库 B 需要它。

或者您可以将事件包装在 B 中。看这里:

class Program
{
    public static void Main(string[] args)
    {
        // Register at B
        BLibClass.BEvent += MyMethod;

        // Something triggers A
        BLibClass.ATrigger();

        Console.ReadKey();
    }

    public static void MyMethod()
    {
        System.Console.WriteLine("Something happeneds!");
    }
}

这里是 A 库:

public class ALibClass
{
    public delegate void HandleAEvent();

    public static event HandleAEvent AEvent;

    public static void ATrigger()
    {
        AEvent();
    }
}

这里是B库:

public class BLibClass
{
    public delegate void HandleBEvent();

    public static event HandleBEvent BEvent;

    private static void WhenAHappens()
    {
        BEvent();
    }

    static BLibClass()
    {
        ALibClass.AEvent += WhenAHappens;
    }

    public static void ATrigger()
    {
        ALibClass.ATrigger();
    }
}