Как исправить «ограничение типа notnull недоступно» в .NET Standard 2.0 при реализации пользовательского интерфейса MicrC#

Место общения программистов C#
Ответить
Anonymous
 Как исправить «ограничение типа notnull недоступно» в .NET Standard 2.0 при реализации пользовательского интерфейса Micr

Сообщение Anonymous »

Я реализую собственную реализацию Microsoft.Extensions.Logging.ILogger для SQL Server. В пакете NuGet указано, что он совместим с .NET Standard 2.0, поэтому я добавил в свое решение библиотеку классов, ориентированную на .NET Standard 2.0.
Используя 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();
}
}
Я получаю ошибку компилятора с ограничением типа notnull для метода BeginScope:

Ошибка 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
Ответить

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

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

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

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

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