FeatureSwitchDefinitionAttribute Класс

Определение

Указывает, что указанное общедоступное логическое свойство соответствует параметру функции, указанному по имени.

public ref class FeatureSwitchDefinitionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)]
public sealed class FeatureSwitchDefinitionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)>]
type FeatureSwitchDefinitionAttribute = class
    inherit Attribute
Public NotInheritable Class FeatureSwitchDefinitionAttribute
Inherits Attribute
Наследование
FeatureSwitchDefinitionAttribute
Атрибуты

Примеры

if (Feature.IsSupported)
    Feature.Implementation();

public class Feature
{
    [FeatureSwitchDefinition("Feature.IsSupported")]
    internal static bool IsSupported => AppContext.TryGetSwitch("Feature.IsSupported", out bool isEnabled) ? isEnabled : true;

    internal static Implementation() => ...;
}

Когда приложение обрезается следующими параметрами компонентов в файле проекта, Feature.IsSupported обрабатывается как falseи Feature.Implementation код удаляется.

<ItemGroup>
  <RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>

Комментарии

Перезаписи IL и компиляторы могут использовать этот атрибут для замены возвращаемого значения указанного свойства значением коммутатора функции.

Значение переключателя функций можно указать только на уровне приложения и влияет на все приложение. Вы можете попасть в ситуации, когда одна библиотека, которая является частью приложения, требует включения переключателя функции, но не имеет способа связать это с автором приложения.

Переключения функций усложняют модульное тестирование и совместное использование кода, так как разные конфигурации приложений могут иметь разные значения коммутатора функций, и трудно обеспечить правильность работы всех путей кода.

Поэтому предпочтительнее структурировать API таким образом, что обрезка может произойти естественным образом без каких-либо коммутаторов функций. Использование коммутаторов функций должно быть зарезервировано для ситуаций, когда необходимо выполнить обрезку, но невозможно изменить API, чтобы разрешить обрезку естественно.

Конструкторы

Имя Описание
FeatureSwitchDefinitionAttribute(String)

Инициализирует новый экземпляр FeatureSwitchDefinitionAttribute класса

с указанным именем переключателя компонентов.

Свойства

Имя Описание
SwitchName

Имя переключателя компонента, предоставляющего значение для указанного свойства.

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к