Как разделить View View в библиотеке классов Razor, на которую ссылаются dll? - PullRequest
1 голос
/ 06 мая 2019

ASP.NET Core 2.2.0

Я создал RCL с некоторыми (Razor) страницами, интерфейсами, репозиториями и моделями, и я хочу поделиться этим RCL, используя ссылку на DLL, с другими моими проектами. Это прекрасно работает (используя this ), и теперь я хочу использовать View Components внутри RCL, но это дает мне ошибку:

InvalidOperationException: невозможно разрешить службу для типа «Shared.ModelInterfaces.IMyRepository» при попытке активировать «Shared.Components.ItemViewComponent».

Погружаясь глубже в ошибку, я нашел это:

метод может быть вызван только для типа, для которого универсальный параметр type.is имеет значение true

И, похоже, это вызывает основную ошибку.

Мой ViewComponent не имеет общего типа:

namespace Shared.Components
{
    public class ItemViewComponent : ViewComponent
    {
        private readonly IMyRepository _myRepository;


        public ItemViewComponent(IMyRepository myRepository)
        {
            _myRepository = myRepository;
        }

        public IViewComponentResult Invoke(string ViewType, string Category = "", string Organization = "", string ItemID = "")
        {
            // some code / some calls to my _myRepository / some returns
        }
    }
}

Как я могу это исправить? Мне нужен репозиторий IMy ...

Примечание:

Я знаю, что на RCL обычно ссылаются как на проект, так и на пакет NuGet, но эти методы имеют для меня некоторые недостатки, поэтому я ссылаюсь на свой RCL с помощью DLL.

1 Ответ

0 голосов
/ 06 мая 2019

Вы должны зарегистрировать свой сервис IMyRepository в проекте, используя компонент вида:

services.AddScoped<IMyRespository, MyRepository>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...