Как преобразовать экземпляр родительского класса из зарегистрированного дочернего класса в Asp. net внедрение основных зависимостей - PullRequest
1 голос
/ 22 марта 2020

Предположим, у меня есть класс

abstract class CustomContext: IdentityDbContext<AppUser, Role>{}

class TContext: CustomContext{}

В регистрации услуг

services.AddDbContext<TContext>();

Здесь выше, я можно разрешить экземпляр TContext, как показано ниже

var context = ServicesCollector.Container.GetService(typeof(TContext));

Но где-то в программе я хочу разрешить экземпляр CustomContext .

1 Ответ

0 голосов
/ 22 марта 2020

Зарегистрируйте абстракцию в фабрике делегатов, которая разрешает реализацию.

services.AddScoped<CusomContext>(sp => sp.GetRequiredService<TContext>());

Таким образом, когда запрашивается абстракция, контейнер узнает ее, пытаясь ее разрешить.

...