public bool ShouldMakeSnapShot(AggregateRoot aggregate, int expectedVersion) { if (!IsSnapshotable(aggregate.GetType())) return false; var i = expectedVersion; for (var j = 0; j < aggregate.GetUncommittedChanges().Count(); j++) if (++i % SnapshotInterval == 0 && i != 0) return true; return false; }