我有一个我正在使用的静态类,因为我不喜欢传递一个巨大的设置文件的想法,但是我希望能够让实例订阅静态类上的静态事件。
我正在研究使用 PropertyChangedEventManager 的 AddListener 方法,但它需要一个实例来添加。
这甚至可能吗?我在.net 4.0上,以防万一。
我有一个我正在使用的静态类,因为我不喜欢传递一个巨大的设置文件的想法,但是我希望能够让实例订阅静态类上的静态事件。
我正在研究使用 PropertyChangedEventManager 的 AddListener 方法,但它需要一个实例来添加。
这甚至可能吗?我在.net 4.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