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代码应该按原样工作。哦,我的天,我非常抱歉-我无意窃取答案:-(