This is just Jetbrains formatting and code syntax styling
This commit is contained in:
@@ -6,6 +6,9 @@ namespace SptDependencyInjection;
|
||||
|
||||
public static class DependencyInjectionRegistrator
|
||||
{
|
||||
private static List<Type>? _allLoadedTypes;
|
||||
private static List<ConstructorInfo>? _allConstructors;
|
||||
|
||||
public static void RegisterModOverrideComponents(IServiceCollection builderServices, List<Assembly> assemblies)
|
||||
{
|
||||
// We get all the services from this assembly first, since mods will override them later
|
||||
@@ -28,14 +31,9 @@ public static class DependencyInjectionRegistrator
|
||||
{
|
||||
// if we have a type override this takes priority
|
||||
if (attribute.InjectableTypeOverride != null)
|
||||
{
|
||||
registerableType = attribute.InjectableTypeOverride;
|
||||
}
|
||||
// if this class only has 1 interface we register it on that interface
|
||||
else if (registerableType.GetInterfaces().Length == 1)
|
||||
{
|
||||
registerableType = registerableType.GetInterfaces()[0];
|
||||
}
|
||||
else if (registerableType.GetInterfaces().Length == 1) registerableType = registerableType.GetInterfaces()[0];
|
||||
|
||||
registerableComponents.Add(new RegisterableType(registerableType, t, attribute));
|
||||
}
|
||||
@@ -46,25 +44,18 @@ public static class DependencyInjectionRegistrator
|
||||
.GroupBy(t => t.RegisterableInterface.FullName);
|
||||
// We get all injectable services to register them on our services
|
||||
foreach (var groupedInjectables in groupedTypes)
|
||||
{
|
||||
foreach (var valueTuple in groupedInjectables.OrderBy(t => t.InjectableAttribute.TypePriority))
|
||||
{
|
||||
if (valueTuple.TypeToRegister.IsGenericType)
|
||||
RegisterGenericComponents(builderServices, valueTuple);
|
||||
else
|
||||
RegisterComponent(
|
||||
builderServices,
|
||||
valueTuple.InjectableAttribute.InjectionType,
|
||||
valueTuple.RegisterableInterface,
|
||||
valueTuple.TypeToRegister
|
||||
);
|
||||
}
|
||||
}
|
||||
foreach (var valueTuple in groupedInjectables.OrderBy(t => t.InjectableAttribute.TypePriority))
|
||||
if (valueTuple.TypeToRegister.IsGenericType)
|
||||
RegisterGenericComponents(builderServices, valueTuple);
|
||||
else
|
||||
RegisterComponent(
|
||||
builderServices,
|
||||
valueTuple.InjectableAttribute.InjectionType,
|
||||
valueTuple.RegisterableInterface,
|
||||
valueTuple.TypeToRegister
|
||||
);
|
||||
}
|
||||
|
||||
private static List<Type>? _allLoadedTypes;
|
||||
private static List<ConstructorInfo>? _allConstructors;
|
||||
|
||||
private static void RegisterGenericComponents(IServiceCollection builderServices, RegisterableType valueTuple)
|
||||
{
|
||||
_allLoadedTypes ??= AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes()).ToList();
|
||||
@@ -85,22 +76,20 @@ public static class DependencyInjectionRegistrator
|
||||
if (constructorInfos.Count == 0) return;
|
||||
|
||||
foreach (var matchedConstructor in constructorInfos)
|
||||
foreach (var parameterInfo in matchedConstructor.GetParameters()
|
||||
.Where(
|
||||
p => p.ParameterType.IsGenericType &&
|
||||
p.ParameterType.GetGenericTypeDefinition().FullName == typeName
|
||||
))
|
||||
{
|
||||
foreach (var parameterInfo in matchedConstructor.GetParameters()
|
||||
.Where(
|
||||
p => p.ParameterType.IsGenericType &&
|
||||
p.ParameterType.GetGenericTypeDefinition().FullName == typeName
|
||||
))
|
||||
{
|
||||
var parameters = parameterInfo.ParameterType.GetGenericArguments();
|
||||
var typedGeneric = valueTuple.TypeToRegister.MakeGenericType(parameters);
|
||||
RegisterComponent(
|
||||
builderServices,
|
||||
valueTuple.InjectableAttribute.InjectionType,
|
||||
parameterInfo.ParameterType,
|
||||
typedGeneric
|
||||
);
|
||||
}
|
||||
var parameters = parameterInfo.ParameterType.GetGenericArguments();
|
||||
var typedGeneric = valueTuple.TypeToRegister.MakeGenericType(parameters);
|
||||
RegisterComponent(
|
||||
builderServices,
|
||||
valueTuple.InjectableAttribute.InjectionType,
|
||||
parameterInfo.ParameterType,
|
||||
typedGeneric
|
||||
);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -150,7 +139,7 @@ public static class DependencyInjectionRegistrator
|
||||
);
|
||||
}
|
||||
|
||||
class RegisterableType(Type registerableInterface, Type typeToRegister, Injectable injectableAttribute)
|
||||
private class RegisterableType(Type registerableInterface, Type typeToRegister, Injectable injectableAttribute)
|
||||
{
|
||||
public Type RegisterableInterface { get; } = registerableInterface;
|
||||
public Type TypeToRegister { get; } = typeToRegister;
|
||||
|
||||
Reference in New Issue
Block a user