gpt4 book ai didi

c# - 如何订阅从 C# 中的任何集合元素触发的事件?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:23 25 4
gpt4 key购买 nike

我制作了以下字典,我希望能够订阅从其任何元素触发的事件,以便了解哪些字典元素的属性已更改。

这是我的类(class):

public class BlockInput : INotifyPropertyChanged
{

public event PropertyChangedEventHandler PropertyChanged;

public void NotifyPropertyChanged(string PropertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}

private int _value;
public int Value
{
get
{
return _value;
}
set
{
_value = Value;
NotifyPropertyChanged("Value");
}
}
}

我创建了一个像下面这样的并发字典:

  public ConcurrentDictionary<string, BlockInput> Inputs;

这将如何实现,以便我在每次 BlockInput 值之一更改/触发每个元素的事件时都能找到?

感谢您的宝贵时间。

最佳答案

除了自己手动订阅所有事件,我认为您没有其他方法:

foreach (BlockInput item in Inputs.Values) {
item.PropertyChanged += BlockInput_PropertyChanged;
}
private void BlockInput_PropertyChanged(object sender, PropertyChangedEventArgs e) {
var blockInput = sender as BlockInput; // Get the item that was changed
// Do stuff
}

如果您打算在 Dictionary 中添加或删除项目,则必须订阅所有添加的项目并取消订阅已删除的项目。

关于c# - 如何订阅从 C# 中的任何集合元素触发的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com