Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,处理依赖项属性更改和更新的简化代码_C#_Event Handling_Dependency Properties_Anonymous Methods_Simplify - Fatal编程技术网

C#,处理依赖项属性更改和更新的简化代码

C#,处理依赖项属性更改和更新的简化代码,c#,event-handling,dependency-properties,anonymous-methods,simplify,C#,Event Handling,Dependency Properties,Anonymous Methods,Simplify,显然,我不是C#方面的专家。我想通过使用匿名处理程序或lambda(不确定)来简化此代码ValueHasChanged是更改dp时使用的PropertyChangedCallback,它确保监视新对象的更新,以便使用相同的代码处理更改和更新:ProcessNewValue。遗憾的是,创建第二个处理程序ValueHasBeenUpdated只是为了调用相同的方法。是否有可能删除更新的值的定义?谢谢 private static void ValueHasChanged( Dependenc

显然,我不是C#方面的专家。我想通过使用匿名处理程序或lambda(不确定)来简化此代码
ValueHasChanged
是更改dp时使用的
PropertyChangedCallback
,它确保监视新对象的更新,以便使用相同的代码处理更改和更新:
ProcessNewValue
。遗憾的是,创建第二个处理程序
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() {...}

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


坚持你所拥有的。

好的,我们走这边。。。但如果有人有不同的做法,我也会感兴趣。谢谢