C#是否可以将弱事件模式与静态类一起使用?

时间:2015-01-19 21:45:55

标签: c# weak-events weakeventmanager

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

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

这甚至可能吗?我在.net 4.0上,如果重要的话。

1 个答案:

答案 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

相关问题