C# 订阅单独类中的事件

C# 订阅单独类中的事件,c#,events,subscription,C#,Events,Subscription,我在订阅我创建的活动时遇到了一些问题。事件本身在它自己的类中,我希望能够从单独项目中的单独类订阅它。我可以从创建它的类中订阅它,但是当我尝试从不同项目中的不同类订阅时,什么也没有发生 有没有人能给我一些建议,让我看看如何解决这个问题?我一直在Google上寻找解决方案,但没有成功:(。以下是我创建并订阅的一个活动的简单示例: using System; class Program { static void Main() { Foo foo = new Foo(

我在订阅我创建的活动时遇到了一些问题。事件本身在它自己的类中,我希望能够从单独项目中的单独类订阅它。我可以从创建它的类中订阅它,但是当我尝试从不同项目中的不同类订阅时,什么也没有发生


有没有人能给我一些建议,让我看看如何解决这个问题?我一直在Google上寻找解决方案,但没有成功:(。

以下是我创建并订阅的一个活动的简单示例:

using System;

class Program
{
    static void Main()
    {
        Foo foo = new Foo();
        foo.Fooing += () => Console.WriteLine("Foo foo'd");

        foo.PleaseRaiseFoo();
    }
}

class Foo
{
    public event Action Fooing;

    protected void OnFooing()
    {
        if (this.Fooing != null)
            this.Fooing();
    }

    public void PleaseRaiseFoo()
    {
        this.OnFooing();
    }
}
希望这应该能够为您指明正确的方向。在代码中检查的主要内容包括:

  • 您的活动是否标记为公开
  • 您是否引发过该事件?(例如,
    this.Fooing()
你试过这个吗

MyInstanceOfMyClass.MyEvent += new EventHandler(MyDelegate);
protected void MyDelegate(object sender, EventArgs e) { ... }

我刚刚用EventHandler委托而不是Action尝试了您的示例代码(因为我在系统命名空间中找不到非泛型Action委托)

下面的代码正如您所期望的那样工作:它输出“Foo-Foo'd”

也许是行动代表,虽然我觉得有点奇怪

class Program
{
    static void Main()
    {
        Foo foo = new Foo();
        foo.Fooing += (object o, EventArgs e) => Console.WriteLine("Foo foo'd");

        foo.PleaseRaiseFoo();
    }
}

class Foo
{
    public event EventHandler Fooing;

    protected void OnFooing()
    {
        if (this.Fooing != null)
            this.Fooing(null, null);
    }

    public void PleaseRaiseFoo()
    {
        this.OnFooing();
    }
}

您注意到您的类位于不同的项目中,您能看到事件类(或该项目中的任何其他类)吗?可能您没有正确引用您的其他项目。

请您发布一些代码好吗?第一个明显的问题:活动是公开的吗?示例代码是由Andrew发布的,而不是OP。Andrews代码应该按原样工作。哦,我的天,我非常抱歉-我无意窃取答案:-(