Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GD0302: параметр загального типу має бути анотований атрибутом [MustBeVariant]

Ідентифікатор правила

GD0302

Категорія

Використання

Виправлення ламається або не ламається

ломка

Увімкнено за замовчуванням

Да

Причина

Загальний тип вказується для аргументу загального типу, коли очікується Variant-compatible type, але вказаний загальний тип не анотовано атрибутом [MustBeVariant].

Опис правила

Якщо параметр загального типу анотовано атрибутом [MustBeVariant], загальний тип має бути типом, сумісним з варіантом. Якщо використовуваний тип також є загальним типом, цей загальний тип також має бути анотований атрибутом [MustBeVariant]. Наприклад, загальний тип Godot.Collections.Array<T> підтримує лише елементи типу, який можна перетворити на Variant, загальний тип можна вказати, якщо він правильно анотований.

public void Method1<T>()
{
    // T is not valid here because it may not a Variant-compatible type.
    var invalidArray = new Godot.Collections.Array<T>();
}

public void Method2<[MustBeVariant] T>()
{
    // T is guaranteed to be a Variant-compatible type because it's annotated
    // with the [MustBeVariant] attribute, so it can be used here.
    var validArray = new Godot.Collections.Array<T>();
}

Як усунути порушення

Щоб виправити порушення цього правила, додайте атрибут [MustBeVariant] до загального типу, який використовується як аргумент загального типу, який має бути сумісним з Variant.

Коли придушувати попередження

Не приховуйте попередження з цього правила. API, який містить аргументи загального типу, анотовані атрибутом [MustBeVariant], зазвичай має цю вимогу, оскільки значення будуть передані механізму, якщо тип не можна маршалювати, це призведе до помилок виконання.