RF0302: Generic-параметру нужен MustBeVariant
Собственный T передаётся в API, требующее Variant-совместимый параметр, но контракт T не отмечен.
Для C#-проекта с Reckfell.NET.Sdk 1.0.0. Сначала исправьте первую ошибку сборки: последующие сообщения могут быть её следствием.
Причина
Собственный T передаётся в API, требующее Variant-совместимый параметр, но контракт T не отмечен.
Исправление
Добавьте MustBeVariant к объявлению T. Это правило анализатора, а не сериализатор произвольного C#-объекта и не CLR-ограничение where.
Пример с ошибкой
Сохраните файл в тестовом C#-проекте и выполните dotnet build. Этот вариант намеренно не собирается.
Example.cs
using Reckfell;
namespace DiagnosticExamples.RF0302;
public static class Example { public static Variant Pack<T>(T value) => Variant.From<T>(value); }Ожидаемые сообщения: RF0302.
Рабочий вариант
Замените ошибочный вариант этими файлами; не оставляйте оба объявления в проекте.
Example.cs
using Reckfell;
namespace DiagnosticExamples.RF0302;
public static class Example { public static Variant Pack<[MustBeVariant] T>(T value) => Variant.From<T>(value); }Результат
Pack<int>(7) возвращает Variant.Type.Int со значением 7. Вызов Pack<DateTime> остаётся ошибкой RF0301.