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