#160 – Be Careful When Setting Dependency Property Values from a DependencyObject Constructor

来源:互联网 发布:手机淘宝松子类目 编辑:程序博客网 时间:2024/06/06 00:02

在构造函数中为依赖属性赋值必须小心

原文地址:https://wpf.2000things.com/2010/12/19/160-be-careful-when-setting-dependency-property-values-from-a-dependencyobject-constructor/

使用C#编码的时候,我们应当尽量避免在构造函数中调用虚函数。因为你的构造函数很有可能是通过子类调用的,而这个时候子类并没有完全初始化完成。如果子类中重写了在构造函数中被调用的虚函数,那么这个被重写的虚函数在构造函数中将不会被父类调用。

如果你用FxCop检查你的代码,就会发现有DoNotCallOverridableMethodsInConstructors 这样一条规则。

这条规则适用于WPF。如果你在构造函数中为依赖属性赋值,那么在属性系统中,虚函数或者回调函数将不会被调用。

避免这个问题的最好方法是:

所有在属性回调中用到的实例初始化都在默认构造函数中进行。(译者注:不是太明白具体原因。。。)


0 0