PostSharp [NotifyPropertyChanged]不适用于基类

时间:2017-12-02 11:18:07

标签: c# wpf mvvm inotifypropertychanged postsharp

我尝试使用PostSharp [NotifyPropertyChanged]功能进行PoC。 假设我有一些包含我的模型类(简单POCO)的模型程序集,它不实现INotifyPropertyChanged并且无法更改。

namespace Ryu.Model
{
    public class PersonModel
    {
        public int Id { get; set; }

        public string DisplayName { get; set; }

        public DateTime? ModifiedDate { get; set; }
    }
}

我想介绍一个Wrapper层,它只是继承了Model的类并应用了PostSharp的[NotifyPropertyChanged]功能。

namespace Ryu.Wrapper
{
    [NotifyPropertyChanged]
    public class PersonWrapper : PersonModel
    {
    }
}

我希望这可以工作并将PropertyChanged应用于基类的所有属性(PersonModel)。但它不起作用。是否有任何技巧可以使这项工作?

1 个答案:

答案 0 :(得分:0)

当您将[NotifyPropertyChanged]方面应用于该类时,PostSharp会将其他代码编入到类的方法和属性中。

在您的情况下,PersonModel的属性不会被修改,因为它没有应用方面。我理解您不希望对PersonModel课程进行任何更改。但是,属性是按PersonWrapper按原样派生的,因此它们在这两个类中的行为不同。

但是,如果您希望将INotifyPropertyChanged实施添加到PersonModel,但您没有该程序集的源代码,那么您可以通过以下方式处理现有的程序集:在命令行上运行PostSharp。这将生成一个新的程序集,其中包含编入所选类的方面。有关详细信息,请参阅文档:http://doc.postsharp.net/command-line