RF0203: Делегат сигнала должен возвращать void
Делегат сигнала объявлен с возвращаемым DateTime. Сигнал уведомляет подписчиков; его контракт должен возвращать void.
Для C#-проекта с Reckfell.NET.Sdk 1.0.0. Сначала исправьте первую ошибку сборки: последующие сообщения могут быть её следствием.
Причина
Делегат сигнала объявлен с возвращаемым DateTime. Сигнал уведомляет подписчиков; его контракт должен возвращать void.
Исправление
Измените возвращаемый тип на void. Если нужен ответ, используйте отдельный метод с результатом и явным вызывающим кодом.
Пример с ошибкой
Сохраните файл в тестовом C#-проекте и выполните dotnet build. Этот вариант намеренно не собирается.
Example.cs
using Reckfell;
namespace DiagnosticExamples.RF0203;
public partial class Example : Entity { [Signal] public delegate System.DateTime ChangedEventHandler(int value); }Ожидаемые сообщения: RF0203.
Рабочий вариант
Замените ошибочный вариант этими файлами; не оставляйте оба объявления в проекте.
Example.cs
using Reckfell;
namespace DiagnosticExamples.RF0203;
public partial class Example : Entity
{
[Signal] public delegate void ChangedEventHandler(int value);
public void Publish() => EmitSignal(SignalName.Changed, 7);
}Результат
Publish() уведомляет Changed и передаёт 7. У делегата нет возвращаемого значения.
В SDK 1.0.0 проверка сигнатуры пока пропускает некоторые поддерживаемые возвращаемые типы, например bool. Успешная сборка такого делегата не делает возвращаемый результат частью контракта сигнала. Объявляйте сигнал с void; DateTime в ошибочном примере выбран, чтобы воспроизвести именно RF0203.