LightDataAccess.ObjectsChangeTracker.GetChanges C# (CSharp) Метод

GetChanges() публичный Метод

public GetChanges ( object Obj ) : TrackingMember[]
Obj object
Результат TrackingMember[]
        public TrackingMember[] GetChanges(object Obj)
        {
            List<TrackingMember> originalValues;
            if (!_trackingObjects.TryGetValue(Obj, out originalValues))
            {
                return null;
            }
            var currentValues = GetObjectMembers(Obj);
            return currentValues
                .Where(
                    (current, idx) =>
                    {
                        var original = originalValues[idx];
                        return
                            ((original.value == null) != (current.value == null))
                            ||
                            (original.value != null && !original.value.Equals(current.value));
                    }
                )
                .ToArray();
        }

Usage Example

        public void TestObjectsTracking()
        {
            var tracker = new ObjectsChangeTracker();
            var a = new A();
            tracker.RegisterObject(a);
            a.f2 = 3;
            var changes = tracker.GetChanges(a);
            Assert.IsTrue( changes[0].name == "f2");
            tracker.RegisterObject(a);
            changes = tracker.GetChanges(a);
            Assert.IsTrue(changes.Length == 0);

            a.f1 = "new";
            a.f2 = 13;
            a.f3 = false;
            for (int i = 0; i < 10; ++i)
            {
                tracker.GetChanges(a);
            }

            changes = tracker.GetChanges(a);
            Assert.IsTrue(TestUtils.AreEqualArraysUnordered(new[] { "f1", "f2", "f3" }, changes.Select(c => c.name).ToArray()));

            changes = tracker.GetChanges(new A());
            Assert.IsNull(changes);
        }
All Usage Examples Of LightDataAccess.ObjectsChangeTracker::GetChanges