Я запутался в том, как использовать библиотеку классов Razor, для которой требуются внедренные объекты. Я создал новый проект библиотеки классов бритвы. Нет файла program.cs и, следовательно, нет WebAssemblyHostBuilder для добавления сервисов? Как внедрить зависимости в компоненты?
Библиотека - это просто. Это не приложение. Вы загружаете объекты внедрения зависимостей в проект приложения. Вы можете написать классы расширения в своей библиотеке в качестве оболочки для загрузки всех необходимых объектов. builder.Services.AddServerSideBlazor()
как раз такое расширение.
Вот пример метода расширения для прогноза погоды.
public static class ServiceCollectionExtensions
{
public static void AddWeatherServices(this IServiceCollection services)
{
services.AddSingleton<WeatherForecastService>();
}
}
И использовать его при запуске приложения:
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddWeatherServices();
Вы внедряете сервисы в свои компоненты как обычно. Если вы используете компонент в приложении, а необходимые службы не загружены, страница, на которой используется компонент, выдаст ошибку.