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.
Checking the stable version of the documentation...
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], зазвичай має цю вимогу, оскільки значення будуть передані механізму, якщо тип не можна маршалювати, це призведе до помилок виконання.