#c# #wpf #.net-core
Вопрос:
Я реализую контейнер DI в приложении .NET Core WPF.
Приведенная ниже настройка работает нормально, но я не знаю, как внедрить интерфейс в любой конструктор моей модели представления.
В разделе MainWindow
Я хочу создать экземпляр двух или более страниц с соответствующими зависимостями (щелкните пункт бокового меню). Как мне получить контейнер зависимостей, чтобы разрешить эти зависимости?
public partial class App : Application
{
private readonly ServiceProvider _serviceProvider;
private IConfiguration _configuration { get; set; }
public App()
{
InitializeConfiguration();
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection);
_serviceProvider = serviceCollection.BuildServiceProvider();
}
private void InitializeConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
_configuration = builder.Build();
}
private void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IConfiguration>(s => _configuration);
services.AddTransient<IRepository, Repository>();
services.AddTransient<IDeliveryService, DeliveryService>();
services.AddSingleton<MainWindow>();
}
private void OnStartup(object sender, StartupEventArgs e)
{
var mainWindow = _serviceProvider.GetService<MainWindow>();
mainWindow.Show();
}
}
Большое спасибо!
Комментарии:
1. Какие модели просмотра?
2. @Nkosi Я пытаюсь следовать шаблону MVVM, поэтому я структурировал страницы по папкам Представлений, моделей представлений и моделей. На данный момент это не так важно, поскольку моя единственная цель-найти способ ввода данных в класс.
3. Пусть представление явно зависит от модели представления с помощью инъекции конструктора, зарегистрируйте модель представления с контейнером, и модель представления будет введена в представление при его разрешении.
4. @Nkosi В главном окне я хочу создать экземпляр 2 или более страниц с соответствующими зависимостями (щелкните пункт бокового меню). Как мне получить контейнер зависимостей, чтобы устранить эту зависимость? у вас есть фрагмент кода на этот счет? Не могли бы вы, пожалуйста, написать ответ? Спасибо!
5. Плюс детали в вашем последнем комментарии должны были быть в оригинальном посте, чтобы помочь другим понять, чего вы пытаетесь достичь.