public void CallApplyingHandler() { List <Tuple <Foo, PropertyOperationData> > callsLog = new List <Tuple <Foo, PropertyOperationData> >(); _tracker.Configure <Foo>() .Id(f => f.Int.ToString()) .Properties(f => new { f.Double, f.Timespan }) .WhenApplyingProperty((f, pd) => callsLog.Add(new Tuple <Foo, PropertyOperationData>(f, pd))); _store.SetData("321", new Dictionary <string, object> { ["Double"] = 444, ["Timespan"] = new TimeSpan(1, 2, 3) }); var foo = new Foo() { Int = 321, }; _tracker.Track(foo); Assert.Equal(2, callsLog.Count); Assert.Equal(foo, callsLog[0].Item1); Assert.Equal("Double", callsLog[0].Item2.Property); Assert.Equal(444, callsLog[0].Item2.Value); Assert.Equal(foo, callsLog[1].Item1); Assert.Equal("Timespan", callsLog[1].Item2.Property); Assert.Equal(new TimeSpan(1, 2, 3), callsLog[1].Item2.Value); }