在编译的时候,再属性中实现INotifyPropertyChanged相关代码
AddInotifyPropertyChangedInterface
自动对添加了此特性的类继承并实现INotifyPropertyChanged接口
[AddINotifyPropertyChangedInterface]
public class InfoModel
public string value{get; set;}
AlsoNotifyFor
属性具有上标记此属性后,若触发通知,同时会触发设置的其他属性的通知
[AddINotifyPropertyChangedInterface]
public class InfoModel
[AlsoNotifyFor("Name")]
public string FirstName { get; set; }
[AlsoNotifyFor("Name")]
public string LastName { get; set; }
public string Name { get; set; }
DoNotNotify
标识的属性不实现通知
[AddINotifyPropertyChangedInterface]
public class InfoModel
[DoNotNotify]
public string Name { get; set; }
DependsOn
指定那些属性变化的时候,通知当前属性变化
public class InfoModel
[DependsOn("FirstName", "LastName")]
public string FullName { get; set; }
DoNotCheckEquality
不检查是否新值与旧值相等(默认会添加新旧值对比的代码)
[DoNotCheckEquality]
public string Value { get; set; }
默认属性 IsChanged(bool)
如果类中定义的IsChanged属性,则当此类中其他属性发生通知时,此值变为true
[AddINotifyPropertyChangedInterface]
public class Model
public string value{get;set;}
public bool IsChanged { get; set; }
插件名称PropertyChanged.Fody获取方式VS通过Nuget添加实现原理在编译的时候,再属性中实现INotifyPropertyChanged相关代码相关特性AddInotifyPropertyChangedInterface自动对添加了此特性的类继承并实现INotifyPropertyChanged接口 [AddINotifyPropertyChangedInterface] public class InfoModel { ///属性 public str
定义自定义 BeforeFieldInit 属性:
[ AttributeUsage ( AttributeTargets . Class | AttributeTargets . Struct , Inherited = false )]
public class BeforeFieldInitAttribute : Attribute
向您的类添加新属性:
[ BeforeFieldInit ]
public class MyClass
static MyClass ()
// Initialization code goes here...
前一篇 简单的介绍了Fody/PropertyChanged的使用方法, 这一篇,我们详细介绍它的一些比较重要的特性和规则
1. Attributes
通过在类或属性上标记这些特性,可以在编译代码时,注入特定的功能
ImplementPropertyChangedAttribute
为类标记此特性,可以实现INotifyPropertyChanged接口
[ImplementProp...
静态AOP Fody PropertyChanged
GitHub:https://github.com/Fody/PropertyChanged
nuget: Install-Package PropertyChanged.Fody
class Program { static void Main(string[] args) {...
在项目中使用PropertyChanged.fody可方便的实现属性通知,只需继承INotifyPropertyChanged接口就可以了,不用显式引发PropertyChangedEvent事件。但是,所使用的库文件PropertyChanged.dll并不会自动拷贝到应用程序生成目录,需要手动拷贝,在项目库引用属性中可看到文件路径,到对应路径下拷贝并粘贴到生成目录即可;
之前使用Costura.fody将所有dll库文件合并到一起来制作绿色版
WPF MVVM中的View-
Model广泛使用INotify
PropertyChanged接口(INPC)。View-
Model中,如果有大量的属性需要实现INPC,直接编码是件非常痛苦和乏味的事情。使用
PropertyChanged.
Fody可以轻松解决问题。
PropertyChanged.
Fody 支持具有继承关系的类。
基类BaseClass实现INotify
PropertyChanged
public class BaseClass : INotify
PropertyChanged