/// <summary> /// Adds all types found <paramref name="service"/> and marked with <see cref="QueryHandlerAttribute"/> to the <paramref name="dependencyContainer"/>. /// </summary> /// <param name="service">Type enumerating service.</param> /// <param name="dependencyContainer">Container to register handlers to.</param> /// <param name="isExecutedForLatelyLoadedAssemblies">Whether to add query handlers from lately loaded assemblies.</param> /// <returns><paramref name="service"/>.</returns> public static ITypeExecutorService AddQueryHandlers(this ITypeExecutorService service, IDependencyContainer dependencyContainer, bool isExecutedForLatelyLoadedAssemblies = true) { Ensure.NotNull(service, "service"); Ensure.NotNull(dependencyContainer, "dependencyContainer"); service .AddFiltered(isExecutedForLatelyLoadedAssemblies) .AddFilterNotInterface() .AddFilterNotAbstract() .AddFilterHasAttribute <QueryHandlerAttribute>() .AddHandler(t => AddQueryHandler(dependencyContainer, t)); return(service); }
/// <summary> /// Adds all types found <paramref name="service"/> and marked with <see cref="QueryHandlerAttribute"/> to the <paramref name="collection"/>. /// </summary> /// <param name="service">Type enumerating service.</param> /// <param name="collection">Query handler collection to add handlers to..</param> /// <param name="isExecutedForLatelyLoadedAssemblies">Whether to add query handlers from lately loaded assemblies.</param> /// <returns><paramref name="service"/>.</returns> public static ITypeExecutorService AddQueryHandlers(this ITypeExecutorService service, IQueryHandlerCollection collection, bool isExecutedForLatelyLoadedAssemblies = true) { Ensure.NotNull(service, "service"); Ensure.NotNull(collection, "collection"); service .AddFiltered(isExecutedForLatelyLoadedAssemblies) .AddFilterNotInterface() .AddFilterNotAbstract() .AddFilterHasDefaultConstructor() .AddFilterHasAttribute <QueryHandlerAttribute>() .AddHandler(t => AddQueryHandler(collection, t)); return(service); }
/// <summary> /// Adds all types found <paramref name="service"/> and marked with <see cref="ConverterAttribute"/> to the <paramref name="repository"/>. /// </summary> /// <param name="service">Type enumerating service.</param> /// <param name="repository">Repository to add converters to.</param> /// <param name="isExecutedForLatelyLoadedAssemblies">Whether to add converters from lately loaded assemblies.</param> /// <returns><paramref name="service"/>.</returns> public static ITypeExecutorService AddConverters(this ITypeExecutorService service, IConverterRepository repository, bool isExecutedForLatelyLoadedAssemblies = true) { Ensure.NotNull(service, "service"); Ensure.NotNull(repository, "repository"); service .AddFiltered(isExecutedForLatelyLoadedAssemblies) .AddFilterNotInterface() .AddFilterNotAbstract() .AddFilterHasDefaultConstructor() .AddFilterHasAttribute <ConverterAttribute>() .AddHandler(t => AddConverter(repository, t)); return(service); }
public void BaseComposition() { StringBuilder result = new StringBuilder(); IReflectionService reflectionService = ReflectionFactory.FromCurrentAppDomain(); using (ITypeExecutorService executors = reflectionService.PrepareTypeExecutors()) { executors.AddFiltered(true) .AddFilterNotInterface() .AddFilterNotAbstract() .AddHandler(t => result.AppendLine(t.FullName)); } File.WriteAllText("C:/Temp/Files.txt", result.ToString()); }
public void AttributeFiltering() { IReflectionService reflectionService = ReflectionFactory.FromCurrentAppDomain(); int matchCount = 0; using (ITypeExecutorService executors = reflectionService.PrepareTypeExecutors()) { executors.AddFiltered(false) .AddFilterHasAttribute <ConverterAttribute>() .AddHandler(t => { Assert.AreEqual(typeof(IntToStringConverter), t); matchCount++; }); } Assert.AreEqual(1, matchCount); }
public void AbstractFiltering() { IReflectionService reflectionService = ReflectionFactory.FromCurrentAppDomain(); int matchCount = 0; using (ITypeExecutorService executors = reflectionService.PrepareTypeExecutors()) { executors.AddFiltered(false) .AddFilterNotAbstract() .AddHandler(t => { Assert.AreEqual(false, t.IsAbstract); matchCount++; }); } Ensure.Positive(matchCount, "matchCount"); }