Multiprocotol Terminalprogram (BAT)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MultiTerm/MultiTerm.Core/Helpers/ServiceExtensions.cs

27 lines
1.3 KiB

using Microsoft.Extensions.DependencyInjection;
using MultiTerm.Core.Factories;
using MultiTerm.Core.ViewModel;
namespace MultiTerm.Core.Helpers;
public static class ServiceExtensions
{
/// <summary>
/// Service Extension to add all implementations of <see cref="ITerminalViewModel"/> to Dependency Injection.
/// Also adds <see cref="TerminalViewModelFactory"/> to Dependency injection, which allows instanciation of <see cref="ITerminalViewModel"/> during runtime.
/// </summary>
/// <param name="services">existing services collection</param>
public static void AddTerminalViewModelFactory(this IServiceCollection services)
{
// add all implementations to the services collection
services.AddTransient<ITerminalViewModel, SendReceiveViewModel>();
services.AddTransient<ITerminalViewModel, ConsoleViewModel>();
// add a function to the services collection, which is used by the TerminalViewModelFactory
// to get a list of all registered implementations of ITerminalViewModel
services.AddSingleton<Func<IEnumerable<ITerminalViewModel>>>(x => () => x.GetService<IEnumerable<ITerminalViewModel>>()!);
// add the factory itself to the services collection
services.AddSingleton<ITerminalViewModelFactory, TerminalViewModelFactory>();
}
}