Используя Visual Studio 2022, я добавил новый класс реализация интерфейса ILogger, и Visual Studio реализовала этот интерфейс явно через меню «Быстрые действия и рефакторинг». В результате получился такой код:
Код: Выделить всё
using Microsoft.Extensions.Logging;
internal class Foo : ILogger
{
public IDisposable BeginScope(TState state) where TState : notnull
{ // (red squiggly line shows up here) ^^^^^^^
throw new NotImplementedException();
}
public bool IsEnabled(LogLevel logLevel)
{
throw new NotImplementedException();
}
public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter)
{
throw new NotImplementedException();
}
}
Ошибка CS8370 — функция «ограничение универсального типа notnull» недоступна в C# 7.3. Пожалуйста, используйте версию языка 8.0 или более позднюю.
Я предполагал, что смогу создать собственную реализацию ILogger в .NET Standard 2.0, поскольку это указано в пакете NuGet. поддерживает .NET Standard 2.0. Снимок экрана страницы поддерживаемых платформ для Microsoft.Extensions.Logging версии 8.0.0 на NuGet.org приведен ниже:

Мое предположение должно быть неверным. Может быть, целевая платформа, указанная в пакете NuGet, относится к использованию пакета в приложении, а не к реализации интерфейса в пакете NuGet?
Есть ли способ реализовать Microsoft.Extensions .Logging.ILogger в проекте .NET Standard 2.0, или мне просто нужно настроить .NET 8+?
Подробнее здесь: https://stackoverflow.com/questions/787 ... -0-when-im
Мобильная версия