Описание
Когда отмечен тип интерфейса, будут отмечены все типы, реализующие этот интерфейс.
using System;
using UnityEngine;
using UnityEngine.Scripting;
public class NewBehaviourScript : MonoBehaviour
{
void Start()
{
IFoo ifoo = new Foo();
}
}
[RequireImplementors]
interface IFoo {}
class Foo : IFoo {}
// UnusedFoo не используется, однако он переживет удаление управляемого кода из-за того, что IFoo имеет атрибут [RequireImplementors].
class UnusedFoo : IFoo
{
// Обратите внимание, что неиспользуемые элементы UnusedFoo все равно будут удалены путем удаления управляемого кода
public static void UnusedMethod() {}
}
// IBar не используется, поэтому он будет удален управляемым удалением кода
[RequireImplementors]
interface IBar {}
// Поскольку IBar не используется, атрибут [RequireImplementors] в IBar не влияет. UnusedBar также будет удален.
class UnusedBar : IBar {}