/// <summary> /// Gets the visitor for the <paramref name="registration"/> and processes it. /// </summary> /// <param name="registration">The <see cref="IRegistration"/> to visit.</param> public void Visit(IRegistration registration) { if (registration == null) { throw new ArgumentNullException(nameof(registration)); } VisitRegistrationDelegate visitorDelegate = GetVisitorDelegate(registration.GetType()); visitorDelegate(this, registration); }
private static VisitRegistrationDelegate GetVisitorDelegate(Type registrationType) { if (registrationType == null) { throw new ArgumentNullException(nameof(registrationType)); } VisitRegistrationDelegate handler = VisitRegistrationDelegates.GetOrAdd(registrationType, CreateVisitorDelegate); return(handler); }