Skip to content

Repository files navigation

TrackChange

NuGetLicense MIT

This is an add-in for Fody.

Tracking POCO properties changes , easy to access what properties changed.

TrackChange will process any POCO class that mark as TrackingAttribute.

All trackable POCOs will be inject to implement ITrackable iterface , you can copy follow code in your project any where.

publicclassTrackingAttribute:Attribute{}publicinterfaceITrackable{/// <summary>/// Modified name of Properties /// </summary>Dictionary<string,bool>ModifiedProperties{get;set;}/// <summary>/// Is Track properties change state/// </summary>boolIsTracking{get;set;}}

Installation

PM>Install-Package TrackChange.Fody

How it works

Your Code

[Tracking]publicclassClass3{publicDateTime?Prop1{get;set;}publicstringTest2{get;set;}publicintIntVal1{get;set;}publicint?IntVal2{get;set;}}

What gets compiled

[Tracking]publicclassClass3:ITrackable{[NonSerialized]publicvirtualboolIsTracking{get;set;}[NonSerialized]publicvirtualDictionary<string,bool>ModifiedProperties{get;set;}=newDictionary<string,bool>();publicDateTime?Prop1{[CompilerGenerated]get{returnthis.<Prop1>k__BackingField;}[CompilerGenerated]set{boolflag=object.Equals(this.Prop1,value);boolflag2=!flag;if(flag2){this.ModifiedProperties["Prop1"]=true;}this.<Prop1>k__BackingField=value;}}publicstringTest2{[CompilerGenerated]get{returnthis.<Test2>k__BackingField;}[CompilerGenerated]set{boolflag=object.Equals(this.Test2,value);boolflag2=!flag;if(flag2){this.ModifiedProperties["Test2"]=true;}this.<Test2>k__BackingField=value;}}publicintIntVal1{[CompilerGenerated]get{returnthis.<IntVal1>k__BackingField;}[CompilerGenerated]set{boolflag=object.Equals(this.IntVal1,value);boolflag2=!flag;if(flag2){this.ModifiedProperties["IntVal1"]=true;}this.<IntVal1>k__BackingField=value;}}publicint?IntVal2{[CompilerGenerated]get{returnthis.<IntVal2>k__BackingField;}[CompilerGenerated]set{boolflag=object.Equals(this.IntVal2,value);boolflag2=!flag;if(flag2){this.ModifiedProperties["IntVal2"]=true;}this.<IntVal2>k__BackingField=value;}}}

About

Tracking POCO properties changes , easy to access what properties changed

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages