Как выполнить инъекцию в команду (WPF)?

Есть команда, находящаяся в другом проекте в виде класса, унаследованная и реализующая интерфейс ICommand.

Эта команда выполняет некоторую логику по использованию сервиса, который открывает OpenFileDialogue и выполняет импорт некоторых данных в репозиторий.

Проблема заключается в следующем: команда вызывается из кнопки, и хоть выполняется отлично - использовать конструктор с параметрами я не могу, а при запуске я падаю на этапе компиляции с ошибкой о том, что невозможно найти нужный конструктор (иногда еще Object reference not set to an instance of an object). При этом DI прекрасно работает с вьюмоделями - в своем UserControl я просто указываю DataContext, а нужные сервисы сами подтягиваются из контейнера.

Сервисы, которые используются в команде, очевидно, я зарегистрировал, но они не работают.

Класс команды:

public class ImportLocalCommand : CommandBase
{
    private IFileImportService _importService;

    public ImportLocalCommand(IFileImportService importService)
    {
        _importService = importService;
    }

    public override bool CanExecute(object? parameter)
        => true;

    public override void Execute(object? parameter)
        => _importService.ExecuteImport();
} 

Регистрация сервисов:

public App()
{
    _host = Host.CreateDefaultBuilder()
        .ConfigureServices(services =>
        {
            services.AddSingleton<MainWindow>()
                .AddSingleton<ApplicationViewModel>()
                .AddSingleton<ImportLocalCommand>()
                .AddSingleton<IFileImportService, FileImportService>()
                .AddSingleton<ISongViewModel, SongViewModel>()
                .AddSingleton<IObservableRepository<Song>, SongRepository>();
        })
        .Build();
}

Строки подключения дата контекста и команды:

d:DataContext="{d:DesignInstance Type=vm:SongViewModel}"

xmlns:comm="clr-namespace:NorthSound.Infrastructure.Commands;assembly=NorthSound.Infrastructure" 

Ответы (0 шт):