【问题标题】:C#, simplified code to handle both changes and updates of a dependency propertyC#,用于处理依赖属性的更改和更新的简化代码
【发布时间】:2010-07-23 16:27:50
【问题描述】:

显然,我不是 C# 方面的专家。我想通过使用匿名处理程序或 lambda 来简化此代码,不确定。 ValueHasChanged 是一个PropertyChangedCallback,当一个 dp 改变时使用,它确保新对象将被监控更新,这样改变和更新都将使用相同的代码:ProcessNewValue。这里的遗憾是创建第二个处理程序ValueHasBeenUpdated 只是为了调用相同的方法。是否有可能删除ValueHasBeenUpdated 的定义?谢谢。

private static void ValueHasChanged(
    DependencyObject sender, DependencyPropertyChangedEventArgs args) {

    // get instance
    MyClass1 instance = sender as MyClass1;

    // unregister on old object
    if (args.OldValue != null) (args.OldValue as MyClass2).PropertyChanged -=
        instance.ValueHasBeenUpdated;
    // register for updates on new object
    if (args.NewValue != null) (args.NewValue as MyClass2).PropertyChanged +=
        instance.ValueHasBeenUpdated;

    // process new value anyway
    instance.ProcessNewValue();
}

// value has been updated
private void ValueHasBeenUpdated(object sender, PropertyChangedEventArgs e) {

    // just call the actual method that will process it, not elegant...
    ProcessNewValue();
}

// process any new or updated object
private void ProcessNewValue() {...}

【问题讨论】:

    标签: c# event-handling dependency-properties anonymous-methods simplify


    【解决方案1】:

    做你所做的没有错。它可能看起来“不优雅”,但它是可读的。可读性比优雅更重要。可能还有其他解决方案,但对于其他编码人员来说(或者从现在起 6 个月后让你理解),它们都会更加令人困惑。

    坚持你所拥有的。

    【讨论】:

    • 好吧,让我们走这条路……但如果有人有不同的做法,我也会感兴趣。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2018-05-20
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多