Как отделить конфигурацию зависимостей от проекта пользовательского интерфейса веб-приложения ASP.NET Core Blazor?C#

Место общения программистов C#
Ответить
Anonymous
 Как отделить конфигурацию зависимостей от проекта пользовательского интерфейса веб-приложения ASP.NET Core Blazor?

Сообщение Anonymous »

У меня есть веб-приложение Blazor с моделью Хостинг на сервере в .NET 8 с минимальной моделью хостинга WebApplication.CreateBuilder.В решении я использую несколько библиотечных проектов, чтобы создать чистую архитектуру во всем приложении, в первую очередь я точно контролирую, как проекты ссылаются друг на друга. Таким образом, технически невозможно, чтобы, например, проект модель домена случайно ссылался на тип из проекта персистентность (база данных).
Как и любое приложение Blazor по умолчанию, этот проект Blazor в настоящее время выполняет две задачи:
  • Настройка внедрения зависимостей всего приложения
  • Размещение компонентов пользовательского интерфейса
Первый момент заставляет проект Blazor ссылаться на каждый другой проект решения. Это приводит к тому, что любой компонент пользовательского интерфейса теперь может ссылаться на тип, например, из проекта персистентности. Моя цель — предотвратить это, чтобы компоненты Blazor могли знать только о типах в проектах с интерфейсами для пользовательского интерфейса.
Поскольку настройку зависимостей для внедрения необходимо выполнять на очень ранней стадии запуска хостинга. Моя идея заключалась в том, чтобы создать специальный проект для хостинга, который мог бы знать любой другой проект для настройки внедрения зависимостей. Это означает, что часть builder.Services.Add(...) для моих пользовательских типов больше не будет в проекте Blazor.
Как этого добиться?
Хостинг-проекту обязательно нужен какой-то файл Program.cs, оптимально использующий операторы верхнего уровня без шаблона класса Program. Но имеет ли смысл использовать там WebApplication.CreateBuilder? Кажется, это создает проблемы, поскольку тогда хост-проект должен иметь тип
, а затем поведение по умолчанию для ContentRootPath/

Код: Выделить всё

WebRootPath
не работает, так как они ищутся в хостинг-проекте, хотя на самом деле находятся в проекте Blazor. А может быть, существуют и другие проблемы, которые я еще не обнаружил.


Подробнее здесь: https://stackoverflow.com/questions/787 ... -core-blaz
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»