/// <summary> /// Checks if <paramref name="value"/> has the flag <paramref name="flag"/> set. /// </summary> /// <param name="value">The value to check.</param> /// <param name="flag">The flag to check.</param> /// <returns>True if value has the flag set.</returns> public static bool HasFlagFast(this DependencyTypes value, DependencyTypes flag) { return((value & flag) != 0); }
public static void RegisterInterfaces(string interfaceType, IServiceCollection services, Assembly coreAssembly, Assembly serviceAssembly, DependencyTypes type = DependencyTypes.Scoped) { var matches = serviceAssembly.GetTypes() .Where(t => t.Name.EndsWith(interfaceType, StringComparison.Ordinal) && t.GetInterfaces().Any(i => i.Assembly == coreAssembly)) .Select(t => new { serviceType = t.GetInterfaces().FirstOrDefault(i => i.Assembly == coreAssembly && !i.Name.ToLower().StartsWith("ibase")), implementingType = t }).ToList(); // Registers the interface to the implementation. foreach (var match in matches) { switch (type) { case DependencyTypes.Scoped: services.AddScoped(match.serviceType, match.implementingType); break; case DependencyTypes.Singleton: services.AddSingleton(match.serviceType, match.implementingType); break; case DependencyTypes.Transient: services.AddTransient(match.serviceType, match.implementingType); break; } } }