订阅我创建的活动时遇到了一些麻烦。事件本身在它自己的类中,我希望能够从单独项目中的单独类订阅它。我能够从创建它的类订阅它 - 但是当我尝试从不同项目中的另一个类订阅时,没有任何事情发生。
有人可以给我一些关于如何完成这项工作的指示吗?我一直在谷歌试图找到一个解决方案但无济于事(。
答案 0 :(得分:6)
以下是我创建和订阅的事件的简单示例:
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()
)答案 1 :(得分:1)
我刚尝试使用EventHandler委托代替Action的示例代码(因为我在System命名空间中找不到非泛型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();
}
}
答案 2 :(得分:0)
你试过这个吗?
MyInstanceOfMyClass.MyEvent += new EventHandler(MyDelegate);
protected void MyDelegate(object sender, EventArgs e) { ... }
答案 3 :(得分:0)
您注意到您的课程处于不同的项目中,您是否可以看到事件类(或该项目中的任何其他类)?也许您没有正确引用其他项目。