我尝试使用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)。但它不起作用。是否有任何技巧可以使这项工作?
答案 0 :(得分:0)
当您将[NotifyPropertyChanged]
方面应用于该类时,PostSharp会将其他代码编入到类的方法和属性中。
在您的情况下,PersonModel
的属性不会被修改,因为它没有应用方面。我理解您不希望对PersonModel
课程进行任何更改。但是,属性是按PersonWrapper
按原样派生的,因此它们在这两个类中的行为不同。
但是,如果您希望将INotifyPropertyChanged
实施添加到PersonModel
,但您没有该程序集的源代码,那么您可以通过以下方式处理现有的程序集:在命令行上运行PostSharp。这将生成一个新的程序集,其中包含编入所选类的方面。有关详细信息,请参阅文档:http://doc.postsharp.net/command-line