FeatureSwitchDefinitionAttribute Classe

Definição

Indica que a propriedade pública estática Booleana de apenas leitura especificada corresponde ao comutador de características especificado pelo nome.

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
Herança
FeatureSwitchDefinitionAttribute
Atributos

Exemplos

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() => ...;
}

Quando o aplicativo é cortado com as seguintes configurações de recurso no arquivo de projeto, Feature.IsSupported é tratado como false, e Feature.Implementation o código é removido.

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

Observações

Reescritores e compiladores de IL podem usar este atributo para substituir o valor de retorno da propriedade especificada pelo valor do feature switch.

O valor do interruptor de funcionalidade só pode ser especificado ao nível da aplicação e afeta toda a aplicação. É possível chegar a situações em que uma biblioteca que faz parte da aplicação exige que o interruptor de funcionalidade seja ativado, mas não tem forma de comunicar isso ao autor da aplicação.

As trocas de funcionalidades complicam os testes unitários e a partilha de código, pois diferentes configurações de aplicação podem ter valores diferentes do interruptor de funcionalidade, e é difícil garantir que todos os caminhos de código funcionam como esperado.

Por isso, é preferível estruturar as APIs de forma a que o cutting possa acontecer naturalmente, sem qualquer alteração de funcionalidades. O uso de interruptores de funcionalidades deveria ser reservado para situações em que seja necessário cortar, mas não é viável alterar as APIs para permitir o corte de forma natural.

Construtores

Name Description
FeatureSwitchDefinitionAttribute(String)

Inicializa uma nova instância da FeatureSwitchDefinitionAttribute classe

com o nome do interruptor de funcionalidade especificado.

Propriedades

Name Description
SwitchName

O nome do interruptor de funcionalidade que fornece o valor para a propriedade especificada.

TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a