当类中的某些内容发生变化时触发事件。

7

当给定类发生变化时,是否可能触发某些事件?

例如,我有一个类,它有100个字段,其中一个字段在外部或内部被修改。现在我想捕捉此事件。该如何做?

最让我想知道的是是否有技巧可以快速处理非常庞大的类。


这是用于调试还是用于更新用户界面?答案会相应不同。 - Matthew Watson
用于更新用户界面和执行许多其他操作。 - Nickon
1个回答

13

作为最佳实践,将您的公共字段转换为手动属性,并使用 INotifyPropertyChanged 接口实现您的 class,以便触发更改 event

编辑:因为您提到了100个字段,我建议您像这个很棒的答案所述那样重构您的代码:用于将 C# 公共字段重构为属性的工具

以下是一个例子:

private string _customerNameValue = String.Empty;
public string CustomerName
{
    get
    {
        return this._customerNameValue;
    }

    set
    {
        if (value != this._customerNameValue)
        {
            this._customerNameValue = value;
            NotifyPropertyChanged();
        }
    }
}
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

看看这个:INotifyPropertyChanged 接口


2
重构你的代码!看看这有多简单:将C#公共字段重构为属性的工具 - Yair Nevet
1
还可以查看这个问题的所有答案。 - TylerOhlsen
@Yair:很好的观点,重构使整个操作更快、更容易 :) - Nickon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接