繁体   English   中英

C# 检测属性/字段何时更改

[英]C# Detect when properties/fields changed

我想将我的类中的属性/字段公开给 UI 系统,UI 组件将订阅每个字段的 onChange 事件以在字段更改以更新 UI 时接收事件。

到目前为止,我所做的是为具有属性值的任何类型制作一个包装器,该属性值在设置时触发事件:

public class LogicClass
{
    public Synced<int> stuff;

    static void Main(string[] args)
    {
        // Then in the UI code we will have:
        // logicClass.stuff.onChange += HandleStuffChange;
    }
}

public class Synced<T>
{
    public event OnChange onChange;
    public delegate void OnChange(Synced<T> value);

    private T _value;
    public T value
    {
        get => _value;
        set
        {
            _value = value;
            onChange?.Invoke(this);
        }
    }
}

问题是每次你想修改它时从包装器中引用 value 属性有点烦人。 有没有办法从客户的角度(示例中的 LogicClass)使这更加透明? 反射也是可以接受的。

形式问题“我们如何检测推送过程的更改?” 假设要求是检测每个更改,甚至是在 for/while 循环中所做的更改。 现实情况是,这取决于消费者对监控内容的需求。 例如,您不会每次更改时都检查车速表。

推送过程也可以用消息淹没消费者。 如果不止一个数据点发生变化,并且场景需要覆盖其他绑定进程怎么办?

监视信息的系统称为仪表。 有资格建造它们的人被称为控制系统工程师。 https://en.wikipedia.org/wiki/Instrumentation

我的仪器操作方法

http://www.powersemantics.com/e.html

  • 非集成
  • 仅主要数据
  • 拉不推
  • 按流程组织
  • 从不离线

要监视数据点的更改,您的 UI 应缓存状态副本并比较每个轮询间隔的增量。 有时,原始数据也是通过一种以上的方法获得的,以确保可靠性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM