FeatureSwitchDefinitionAttribute Classe

Definição

Indica que a propriedade booliana estática especificada corresponde à opção de recurso especificada 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 falsee Feature.Implementation o código é removido.

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

Comentários

Reescritas e compiladores il podem usar esse atributo para substituir o valor retornado da propriedade especificada pelo valor da opção de recurso.

O valor da opção de recurso só pode ser especificado no nível do aplicativo e afeta todo o aplicativo. É possível entrar em situações em que uma biblioteca que faz parte do aplicativo requer que a opção de recurso seja ativada, mas não tem como comunicar isso ao autor do aplicativo.

As opções de recursos complicam o teste de unidade e o compartilhamento de código, uma vez que diferentes configurações de aplicativo podem ter valores diferentes do comutador de recursos e é difícil garantir que todos os caminhos de código funcionem conforme o esperado.

Portanto, é preferível estruturar APIs de uma forma que o corte possa acontecer naturalmente sem nenhuma opção de recurso. O uso de comutadores de recursos deve ser reservado para situações em que o corte precisa acontecer, mas não é viável alterar as APIs para permitir o corte naturalmente.

Construtores

Nome Description
FeatureSwitchDefinitionAttribute(String)

Inicializa uma nova instância da FeatureSwitchDefinitionAttribute classe

com o nome da opção de recurso especificado.

Propriedades

Nome Description
SwitchName

O nome da opção de recurso que fornece o valor da propriedade especificada.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse Attribute.

(Herdado de Attribute)

Métodos

Nome Description
Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash dessa instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a