Мне нужно создать приложение ASP.NET Core 2, которое может быть расширяемым.
Расширение - это проект, который ссылается на основную сборку и может расширять его, добавляя новые контроллеры, модели (с миграциями EF), представления, бритвенные страницы и т. д.
Поскольку расширения должны использовать базовые классы основного приложения, такие как базовый контроллер, базовая модель или макет представления / страницы, основное приложение не может ссылаться на проект модуля (избегайте циклических ссылок).
Я не уверен, как мне этого добиться, но идея заключается в установке основного проекта, может добавить новые функциональные возможности, просто поместив модули DLL (или через онлайн-маркет в основное приложение, которое загружаетDLL).
В своем исследовании я обнаружил Части приложений , но моя проблема здесь заключается в том, что мне нужно указать сборку деталей в классе запуска, и мне нужно установить емкость инсталляционных модулей безвнесение любых изменений в код.
Некоторые модули тоже должны быть расширяемыми, например,Модуль Untting, необходимо соединиться с банком, и у него есть интерфейс, который определяет методы работы с банком, например:
public interface IBankingOperation
{
public async void PayInvoiceAsync(Invoice invoice);
// More methods...
}
Тогда разные проекты могут ссылаться на банковскую сборку и обеспечивать реализацию для разных.банки.
В основном приложении эти модули могут быть установлены как другие модули, но, проверяя базовый модуль, например, я могу установить модуль Сантандера как другой модуль, но только если установлен банковский модуль(зависимость от модуля).
В заключение мне нужно создать модульное приложение ASP.NET Core 2, но основная сборка не может ссылаться на модули, модули должны ссылаться на основную сборку.Модули могут содержать контроллеры, модели, представления, страницы и т. Д.