コード例 #1
0
        public static IServiceCollection AddInjectableServices(this IServiceCollection services, ServiceLifetime serviceLifetime = ServiceLifetime.Scoped)
        {
            var resolver = new ServiceResolver();

            foreach (var serviceType in resolver.ResolveByAttribute(typeof(InjectableAttribute)))
            {
                var attribute = serviceType.GetTypeInfo().GetCustomAttribute <InjectableAttribute>();
                services.TryAdd(new ServiceDescriptor(attribute.Interface ?? serviceType, serviceType, attribute.Lifetime ?? serviceLifetime));
            }
            return(services);
        }