Как я могу объявить ILogger в базовом классе?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу объявить ILogger в базовом классе?

Сообщение Anonymous »

Обновление: Ответ Дмитрия ниже помог мне решить эту проблему. Я разместил свою реализацию на GitHub и NuGet.

Это на сервере Blazor, хотя я думаю, что здесь это не имеет значения.У меня есть базовый класс, в котором я в первую очередь объявляю службы [Inject], необходимые всем моим страницам Razor. Так много:

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

[Inject]
protected IDbContextFactory NoTrackingDbFactory { get; set; } = default!;

[Inject]
protected ExUserManager UserManager { get; set; } = default!;

[Inject]
protected NavigationManager Navigation { get; set; } = default!;
Я бы тоже хотел:

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

[Inject]
private ScopedLoggerFactory ScopedLoggerFactory { get; set; } = default!;

protected ScopedLogger Logger { get; set; } = default!;

protected override async Task OnInitializedAsync()
{
Logger = ScopedLoggerFactory.GetLogger(Principal);
}
Где — это унаследованный от него подкласс. Я попытался объявить базовый класс как:

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

ExPageBase : where T is class
А затем файл бритвы как

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

Interests : ExPageBase
но компилятору это не понравилось.
В настоящее время то, что я делаю в каждом подклассе (и, конечно, это не имеет большого значения, поэтому настоящее ситуация в порядке) это:

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

[Inject]
private ScopedLoggerFactory ScopedLoggerFactory { get; set; } = default!;

private ScopedLogger Logger { get; set; } = default!;

protected override async Task OnInitializedAsync()
{
Logger = ScopedLoggerFactory.GetLogger(Principal);
}
Есть ли способ переместить эту часть двух объявлений членов и присвоение в базовый класс?

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

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

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

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

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

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

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