Initial commit
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
using RobotNet10.FleetManager.Events;
|
||||
using RobotNet10.RobotApp.Events;
|
||||
using RobotNet10.RobotApp.Interfaces;
|
||||
using RobotNet10.RobotApp.Services.ConfigManager;
|
||||
using RobotNet10.RobotApp.Services.Navigation;
|
||||
using RobotNet10.RobotApp.Services.Navigation.CSharp;
|
||||
using RobotNet10.RobotApp.Services.Robot.Actions;
|
||||
using RobotNet10.RobotApp.Services.Robot.Connection;
|
||||
using RobotNet10.RobotApp.Services.Robot.Modules;
|
||||
using RobotNet10.RobotApp.Services.State;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace RobotNet10.RobotApp.Services.Robot;
|
||||
|
||||
public static class RobotExtensions
|
||||
{
|
||||
public static IServiceCollection AddRobot(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<RobotStateMachine>();
|
||||
services.AddSingleton<RobotStateMachineExecute>();
|
||||
services.AddSingleton<RobotVisualization>();
|
||||
|
||||
services.AddInterfaceServiceSingleton<IRobotConfiguration, RobotConfiguration>();
|
||||
services.AddInterfaceServiceSingleton<IConnectionConfig, ConnectionConfig>();
|
||||
services.AddInterfaceServiceSingleton<INavigationConfig, ConfigManager.NavigationConfig>();
|
||||
services.AddInterfaceServiceSingleton<IRobotConnectionsService, RobotConnectionsService>();
|
||||
services.AddInterfaceServiceSingleton<IRobotEventBus, RobotEventBus>();
|
||||
services.AddInterfaceServiceSingleton<IError, RobotErrors>();
|
||||
services.AddInterfaceServiceSingleton<IInfomation, RobotInfomations>();
|
||||
services.AddInterfaceServiceSingleton<INavigation, RobotNavigation>();
|
||||
services.AddInterfaceServiceSingleton<IOrder, RobotOrderController>();
|
||||
services.AddInterfaceServiceSingleton<ILoad, RobotLoads>();
|
||||
services.AddInterfaceServiceSingleton<ILocalization, RobotLocalization>();
|
||||
services.AddInterfaceServiceSingleton<IState, RobotStates>();
|
||||
services.AddInterfaceServiceSingleton<IPlcController, RobotPlcController>();
|
||||
|
||||
services.AddInterfaceServiceSingleton<IVelocityController, VelocityController>();
|
||||
services.AddInterfaceServiceSingleton<IFactsheet, RobotFactsheet>();
|
||||
|
||||
services.AddHostedInterfaceServiceSingleton<IAction, RobotActionController>();
|
||||
services.AddHostedInterfaceServiceSingleton<IRobotActionProvider, RobotActionProvider>();
|
||||
|
||||
services.AddHostedInterfaceServiceSingleton<IRobotController, RobotController>();
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddInterfaceServiceSingleton<TService, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TImplementation>(this IServiceCollection services) where TService : class where TImplementation : class, TService
|
||||
{
|
||||
services.AddSingleton<TImplementation>();
|
||||
services.AddSingleton<TService>(sp => sp.GetRequiredService<TImplementation>());
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddInterfacesServiceSingleton<TService1, TService2, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TImplementation>(this IServiceCollection services) where TService1 : class where TService2 : class where TImplementation : class, TService1, TService2
|
||||
{
|
||||
services.AddSingleton<TImplementation>();
|
||||
services.AddSingleton<TService1>(sp => sp.GetRequiredService<TImplementation>());
|
||||
services.AddSingleton<TService2>(sp => sp.GetRequiredService<TImplementation>());
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddHostedServiceSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] THostedService>(this IServiceCollection services) where THostedService : class, IHostedService
|
||||
{
|
||||
services.AddSingleton<THostedService>();
|
||||
services.AddHostedService(sp => sp.GetRequiredService<THostedService>());
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddHostedInterfaceServiceSingleton<TService, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] THostedService>(this IServiceCollection services) where TService : class where THostedService : class, IHostedService, TService
|
||||
{
|
||||
services.AddSingleton<THostedService>();
|
||||
services.AddSingleton<TService>(sp => sp.GetRequiredService<THostedService>());
|
||||
services.AddHostedService(sp => sp.GetRequiredService<THostedService>());
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddHostedInterfaceServiceSingleton<TService1, TService2, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] THostedService>(this IServiceCollection services) where TService1 : class where TService2 : class where THostedService : class, IHostedService, TService1, TService2
|
||||
{
|
||||
services.AddSingleton<THostedService>();
|
||||
services.AddSingleton<TService1>(sp => sp.GetRequiredService<THostedService>());
|
||||
services.AddSingleton<TService2>(sp => sp.GetRequiredService<THostedService>());
|
||||
services.AddHostedService(sp => sp.GetRequiredService<THostedService>());
|
||||
return services;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user