Служба внедрения зависимостей Blazor не зарегистрированаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Служба внедрения зависимостей Blazor не зарегистрирована

Сообщение Anonymous »

Я создал проект ASP.NET Blazor. Существует клиент, который представляет собой приложение Blazor WebAssembly, и у него есть BaseLibrary, в котором я храню DTO и объекты, а также ClientLibrary, который я использую для вызова API.
В ClientLibrary существует интерфейс IGenericServiceInterface и GenericServiceImplementation. GenericServiceImplementation наследует функции IGenericServiceInterface, особенно для вызовов API. Я зарегистрировал все это в файле program.cs клиента и файле _imports.razor.
Аллергия, лекарство, заболевание, ингредиент — это единое целое.
например, объект лекарственного средства

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

using BaseLibrary.EntitiesRelation;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;

namespace BaseLibrary.Entities
{
[Index(nameof(Medication_Name), IsUnique = true)]

public class Medication
{
[Key]
public int Medication_Id { get; set; }
public string? Medication_Name { get; set; }

// Relation N:M
public virtual ICollection
 PatientMedications { get; set; } = new List();
}
}
IGenericServiceInterface

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

using BaseLibrary.Responses;

namespace ClientLibrary.Services.Contracts
{
public interface IGenericServiceInterface
{
Task GetAll(string baseUrl);
Task GetById(int id, string baseUrl);
Task Insert(T item, string baseUrl);
Task Update(T item, string baseUrl);
Task Delete(int id, string baseUrl);
}
}
GenericServiceImplementation

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

using System.Net.Http.Json;
using BaseLibrary.Responses;
using ClientLibrary.Helpers;
using ClientLibrary.Services.Contracts;

namespace ClientLibrary.Services.Implementations
{
public class GenericServiceImplementation(GetHttpClient getHttpClient) : IGenericServiceInterface
{

// Create
public async Task Insert(T item, string baseUrl)
{
var httpClient = await getHttpClient.GetPrivateHttpClient();
var response = await httpClient.PostAsJsonAsync($"{baseUrl}/add", item);
var result = await response.Content.ReadFromJsonAsync();
return result!;
}

// Read All
public async Task GetAll(string baseUrl)
{
var httpClient = await getHttpClient.GetPrivateHttpClient();
var result = await httpClient.GetFromJsonAsync($"{baseUrl}/all");
return result!;
}

// Update
public async Task Update(T item, string baseUrl)
{
var httpClient = await getHttpClient.GetPrivateHttpClient();
var response = await httpClient.PutAsJsonAsync($"{baseUrl}/update", item);
var result = await response.Content.ReadFromJsonAsync();
return result!;
}

// Delete
public async Task Delete(int id, string baseUrl)
{
var httpClient = await getHttpClient.GetPrivateHttpClient();
var response = await httpClient.DeleteAsync($"{baseUrl}/delete/{id}");
var result = await response.Content.ReadFromJsonAsync();
return result!;
}

public async Task GetById(int id, string baseUrl)
{
var httpClient = await getHttpClient.GetPrivateHttpClient();
var result = await httpClient.GetFromJsonAsync($"{baseUrl}/single/{id}");
return result!;
}

}
}
Program.CS

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

builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
Imports.razor

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

@inject IGenericServiceInterface allergyService
@inject IGenericServiceInterface diseaseService
@inject IGenericServiceInterface ingredientService
@inject IGenericServiceInterface  medicationService
Когда я запускаю приложение и нажимаю на страницу аллергии, отображается эта проблема

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

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: Cannot provide a value for property 'medicationService' on type 'Client.Pages.ContentPages.AdminFunctions.Allergies'. There is no registered service of type 'ClientLibrary.Services.Contracts.IGenericServiceInterface`1[Client.Pages.ContentPages.AdminFunctions.Medication]'.
System.InvalidOperationException: Cannot provide a value for property 'medicationService' on type 'Client.Pages.ContentPages.AdminFunctions.Allergies'. There is no registered service of type 'ClientLibrary.Services.Contracts.IGenericServiceInterface`1[Client.Pages.ContentPages.AdminFunctions.Medication]'.
at Microsoft.AspNetCore.Components.ComponentFactory.c__DisplayClass9_0.g__Initialize|1(IServiceProvider serviceProvider, IComponent component)
at Microsoft.AspNetCore.Components.ComponentFactory.InstantiateComponent(IServiceProvider serviceProvider, Type componentType, IComponentRenderMode callerSpecifiedRenderMode, Nullable`1 parentComponentId)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateChildComponentOnFrame(RenderTreeFrame[] frames, Int32 frameIndex, Int32 parentComponentId)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(DiffContext& diffContext, Int32 frameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext& diffContext, Int32 frameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
Как видите, я все везде внедрил, но не понимаю, в чем проблема.

Подробнее здесь: https://stackoverflow.com/questions/791 ... registered
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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