/// <summary> /// Process the specified <seealso cref="ServiceRegistration"/> for the types in all assemblies. /// </summary> /// <param name="serviceRegistration">Instance of <see cref="ServiceRegistration"/> to use.</param> public void AutoRegister(ServiceRegistration serviceRegistration) { if (serviceRegistration == null || !serviceRegistration.IsValid()) return; lock (_lock) { var assemblies = GetAssemblies(); var registration = serviceRegistration.RegistrationHandler; var serviceType = serviceRegistration.ServiceType; var typeFilter = serviceRegistration.TypeFilter; foreach (Assembly assembly in assemblies) { try { var registrationTypes = assembly.GetTypes() .Where(matchedType => typeFilter(matchedType, serviceType)); foreach (Type type in registrationTypes) { registration(ServiceLocator, type); } } catch (ReflectionTypeLoadException loadException) { string assemblyName = assembly.FullName; string detailedMessage = loadException.GetDetailedMessage(assemblyName); throw new DependencyResolutionException(assemblyName, detailedMessage); } } } }
public void Can_Add_Valid_Registration_To_List() { var registration = new ServiceRegistration(); var list = new AutoRegistrationList {registration, registration}; Assert.IsNotEmpty(list.ToList()); Assert.AreEqual(list.Count(), 2); }
public void Registration_With_RegistrationHandler_Only_Is_Invalid() { var instance = new ServiceRegistration { RegistrationHandler = (locator, type) => { } }; Assert.IsFalse(instance.IsValid()); }
public void Registration_With_All_Properties_Is_Valid() { var instance = new ServiceRegistration { ServiceType = typeof(object), RegistrationHandler = (locator, type) => { }, TypeFilter = (service, reg) => false }; Assert.IsTrue(instance.IsValid()); }
public void Registration_With_TypeFilter_Only_Is_Invalid() { var instance = new ServiceRegistration { TypeFilter = (service, reg) => false }; Assert.IsFalse(instance.IsValid()); }
public void Registration_With_ServiceType_Only_Is_Invalid() { var instance = new ServiceRegistration { ServiceType = typeof(object) }; Assert.IsFalse(instance.IsValid()); }
public void New_Instance_Is_Invalid() { var instance = new ServiceRegistration(); Assert.IsFalse(instance.IsValid()); }
public void Can_Create_Valid_Instance() { var instance = new ServiceRegistration(); Assert.IsNotNull(instance); }
public void AutoRegister(ServiceRegistration serviceRegistration) { if (serviceRegistration.ServiceType == typeof (ILazySetup)) { serviceLocator.Register<ILazySetup, StructureMapLazySetup>("StructureMap"); serviceLocator.Register<ILazySetup, UnityLazySetup>("Unity"); serviceLocator.Register<ILazySetup, NinjectLazySetup>("Ninject"); serviceLocator.Register<ILazySetup, WindsorLazySetup>("Windsor"); } }