0

我有一个我正在使用的静态类,因为我不喜欢传递一个巨大的设置文件的想法,但是我希望能够让实例订阅静态类上的静态事件。

我正在研究使用 PropertyChangedEventManager 的 AddListener 方法,但它需要一个实例来添加。

这甚至可能吗?我在.net 4.0上,以防万一。

4

1 回答 1

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

于 2015-01-19T21:57:20.497 回答