public DuplicateEventCleaner (
OutlookEventRepository outlookRepository,
IEntityRepository<WebResourceName, string, IICalendar, IEventSynchronizationContext> btypeRepository,
IEntityRelationDataAccess<AppointmentId, DateTime, WebResourceName, string> entityRelationDataAccess,
IEqualityComparer<AppointmentId> idComparer)
{
if (outlookRepository == null)
throw new ArgumentNullException (nameof (outlookRepository));
if (btypeRepository == null)
throw new ArgumentNullException (nameof (btypeRepository));
if (entityRelationDataAccess == null)
throw new ArgumentNullException (nameof (entityRelationDataAccess));
if (idComparer == null) throw new ArgumentNullException(nameof(idComparer));
_outlookRepository = outlookRepository;
_btypeRepository = btypeRepository;
_entityRelationDataAccess = entityRelationDataAccess;
_hashesById = new Dictionary<AppointmentId, int>(idComparer);
}