事件通过C#属性发布和订阅

时间:2015-08-17 17:54:16

标签: c#

我们可以通过在Method或property上指定的C#属性来进行事件发布和订阅吗?

如果属性被更改..那么我们需要发起一个事件......
[FirePropertyChangedEvent]   SomeProperty

1 个答案:

答案 0 :(得分:0)

我已经回答了一个类似的问题,所以我的回答很糟糕:

假设您正在使用本地“速度”变量,每次更新主“速度”变量时都需要更新...

public class SpeedHolder
{
    private float _speed;

    public event Action<float> OnSpeedChange;

    public float Speed
    {
        get { return _speed; }
        set { SetSpeed(value); }
    }

    public SetSpeed(float value)
    {
        _speed = value;
        if(OnSpeedChange != null)
            OnSpeedChange(_speed);
    }
}

现在在使用speed float变量的每个脚本的每个'constructor'方法中,你需要添加这一行:SpeedHolder.OnSpeedChange += ChangeSpeed;并有一个像这样的方法:

public void ChangeSpeed(value)
{
    speed = value;
}