|
|
|
@ -16,50 +16,30 @@ namespace Microsoft.Extensions.DependencyInjection |
|
|
|
|
|
|
|
public static IServiceCollection AddAssemblyOf<T>(this IServiceCollection services) |
|
|
|
{ |
|
|
|
return services.AddAssemblyOf<T>(false); |
|
|
|
return services.InternalAddAssemblyOf<T>(false); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddAssemblyOf<T>(this IServiceCollection services) |
|
|
|
{ |
|
|
|
return services.AddAssemblyOf<T>(true); |
|
|
|
return services.InternalAddAssemblyOf<T>(true); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddAssembly(this IServiceCollection services, Assembly assembly) |
|
|
|
{ |
|
|
|
return services.AddAssembly(assembly, false); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddAssembly(this IServiceCollection services, Assembly assembly) |
|
|
|
{ |
|
|
|
return services.AddAssembly(assembly, true); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddTypes(this IServiceCollection services, params Type[] types) |
|
|
|
internal static IServiceCollection InternalAddAssemblyOf<T>(this IServiceCollection services, bool tryAdd) |
|
|
|
{ |
|
|
|
return services.AddTypes(false, types); |
|
|
|
return services.InternalAddAssembly(typeof(T).GetTypeInfo().Assembly, tryAdd); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddTypes(this IServiceCollection services, params Type[] types) |
|
|
|
{ |
|
|
|
return services.AddTypes(true, types); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddType(this IServiceCollection services, Type type) |
|
|
|
{ |
|
|
|
return services.AddType(type, false); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddType(this IServiceCollection services, Type type) |
|
|
|
public static IServiceCollection AddAssembly(this IServiceCollection services, Assembly assembly) |
|
|
|
{ |
|
|
|
return services.AddType(type, true); |
|
|
|
return services.InternalAddAssembly(assembly, false); |
|
|
|
} |
|
|
|
|
|
|
|
internal static IServiceCollection AddAssemblyOf<T>(this IServiceCollection services, bool tryAdd) |
|
|
|
public static IServiceCollection TryAddAssembly(this IServiceCollection services, Assembly assembly) |
|
|
|
{ |
|
|
|
return services.AddAssembly(typeof(T).GetTypeInfo().Assembly, tryAdd); |
|
|
|
return services.InternalAddAssembly(assembly, true); |
|
|
|
} |
|
|
|
|
|
|
|
internal static IServiceCollection AddAssembly(this IServiceCollection services, Assembly assembly, bool tryAdd) |
|
|
|
internal static IServiceCollection InternalAddAssembly(this IServiceCollection services, Assembly assembly, bool tryAdd) |
|
|
|
{ |
|
|
|
var types = AssemblyHelper |
|
|
|
.GetAllTypes(assembly) |
|
|
|
@ -72,10 +52,20 @@ namespace Microsoft.Extensions.DependencyInjection |
|
|
|
!typeInfo.IsDefined(typeof(SkipAutoRegistrationAttribute)); |
|
|
|
}); |
|
|
|
|
|
|
|
return services.AddTypes(tryAdd, types.ToArray()); |
|
|
|
return services.InternalAddTypes(tryAdd, types.ToArray()); |
|
|
|
} |
|
|
|
|
|
|
|
internal static IServiceCollection AddTypes(this IServiceCollection services, bool tryAdd, params Type[] types) |
|
|
|
public static IServiceCollection AddTypes(this IServiceCollection services, params Type[] types) |
|
|
|
{ |
|
|
|
return services.InternalAddTypes(false, types); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddTypes(this IServiceCollection services, params Type[] types) |
|
|
|
{ |
|
|
|
return services.InternalAddTypes(true, types); |
|
|
|
} |
|
|
|
|
|
|
|
internal static IServiceCollection InternalAddTypes(this IServiceCollection services, bool tryAdd, params Type[] types) |
|
|
|
{ |
|
|
|
foreach (var type in types) |
|
|
|
{ |
|
|
|
@ -85,6 +75,16 @@ namespace Microsoft.Extensions.DependencyInjection |
|
|
|
return services; |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection AddType(this IServiceCollection services, Type type) |
|
|
|
{ |
|
|
|
return services.AddType(type, false); |
|
|
|
} |
|
|
|
|
|
|
|
public static IServiceCollection TryAddType(this IServiceCollection services, Type type) |
|
|
|
{ |
|
|
|
return services.AddType(type, true); |
|
|
|
} |
|
|
|
|
|
|
|
internal static IServiceCollection AddType(this IServiceCollection services, Type type, bool tryAdd) |
|
|
|
{ |
|
|
|
var lifeTime = GetServiceLifeTime(type); |
|
|
|
@ -96,13 +96,14 @@ namespace Microsoft.Extensions.DependencyInjection |
|
|
|
foreach (var serviceType in AutoRegistrationHelper.GetExposedServices(type)) |
|
|
|
{ |
|
|
|
var serviceDescriptor = ServiceDescriptor.Describe(serviceType, type, lifeTime.Value); |
|
|
|
|
|
|
|
if (tryAdd) |
|
|
|
{ |
|
|
|
services.Add(serviceDescriptor); |
|
|
|
services.TryAdd(serviceDescriptor); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
services.TryAdd(serviceDescriptor); |
|
|
|
services.Add(serviceDescriptor); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|