reckfellENGINE

RF0203: Делегат сигнала должен возвращать void

Делегат сигнала объявлен с возвращаемым DateTime. Сигнал уведомляет подписчиков; его контракт должен возвращать void.

На этой странице

Для C#-проекта с Reckfell.NET.Sdk 1.0.0. Сначала исправьте первую ошибку сборки: последующие сообщения могут быть её следствием.

Причина

Делегат сигнала объявлен с возвращаемым DateTime. Сигнал уведомляет подписчиков; его контракт должен возвращать void.

Исправление

Измените возвращаемый тип на void. Если нужен ответ, используйте отдельный метод с результатом и явным вызывающим кодом.

Пример с ошибкой

Сохраните файл в тестовом C#-проекте и выполните dotnet build. Этот вариант намеренно не собирается.

Example.cs
C#
using Reckfell;

namespace DiagnosticExamples.RF0203;

public partial class Example : Entity { [Signal] public delegate System.DateTime ChangedEventHandler(int value); }

Ожидаемые сообщения: RF0203.

Рабочий вариант

Замените ошибочный вариант этими файлами; не оставляйте оба объявления в проекте.

Example.cs
C#
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.

Связанные материалы

Все ошибки C# · Руководство C#

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.