[英]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.