首页 > 解决方案 > 如何观察不同类别的整数

问题描述

我有一个名为游戏的类,游戏有一个玩家列表(我无权访问 Player 类!)。每个玩家都有一个整数,代表他剩下的生命点数,如下所示

class Player
{
    public int Life;
    ....
}

每次玩家的生活发生变化时,我都需要提醒游戏类,游戏类看起来像这样

class Game
{
    public void OnPlayerLifeChange();
    ....
}

我想OnPlayerLifeChange在会员更改时激活该功能Life,我该怎么做?再次注意,我无法更改 Player 类并使生活成为具有事件的属性。

标签: c#eventsobservable

解决方案


一种常见的方法是在 Player 类中实现 INotifyPropertyChanged 接口,将 Life 从字段更改为属性,并从 setter 引发 PropertyChanged 事件。

class Player : INotofyPropertyChanged
{
    private int _life;
    public int Life
    {
        get { return _life; }
        set { _life = value; OnPropertyChanged("Life"); }
    }

    ....
}

然后游戏可以订阅所有玩家的 PropertyChanged 事件并做出相应的反应。


推荐阅读