我有一个静态类我正在使用,因为我不喜欢传递一个巨大的设置文件,但后来我希望能够让实例在静态类上订阅静态事件。
我正在研究使用PropertyChangedEventManager的AddListener方法,但它需要添加一个实例。
这甚至可能吗?我在.net 4.0上,如果重要的话。
答案 0 :(得分:0)
您可以拥有一个静态事件,并且有多个实例订阅它。您必须记住所有有线的实例都会收到有关事件及其实现调用的通知。这也可能在内存管理方面存在问题,您的实例不会超出范围并获得GC,直到他们将自己从事件中解脱出来。
下面是一个示例脚本:
delegate void Pop();
static event Pop PopEvent;
void Main()
{
var t1= new Thing("firstone");
var t2= new Thing("secondOne");
//fire event
PopEvent();
}
public class Thing
{
public Thing(string name)
{
this.name = name;
PopEvent += this.popHandler;
}
private string name="";
public void popHandler()
{
Console.WriteLine("Event handled in {0}",this.name);
}
}
输出:
Event handled in firstone
Event handled in secondOne