FeatureSwitchDefinitionAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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) |