FeatureSwitchDefinitionAttribute Klas

Definitie

Geeft aan dat de opgegeven openbare statische Booleaanse eigenschap alleen-lezen overeenkomt met de functieswitch die is opgegeven met de naam.

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
Overname
FeatureSwitchDefinitionAttribute
Kenmerken

Voorbeelden

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

Wanneer de app wordt ingekort met de volgende functie-instellingen in het projectbestand, Feature.IsSupported wordt deze behandeld als falseen Feature.Implementation wordt de code verwijderd.

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

Opmerkingen

IL-rewriters en compilers kunnen dit kenmerk gebruiken om de retourwaarde van de opgegeven eigenschap te vervangen door de waarde van de functieswitch.

De waarde van de functieswitch kan alleen worden opgegeven op toepassingsniveau en is van invloed op de hele toepassing. Het is mogelijk om in situaties te komen waarin een bibliotheek die deel uitmaakt van de toepassing, de functieswitch moet worden ingeschakeld, maar geen manier heeft om dit te communiceren met de auteur van de toepassing.

Functieswitches maken het testen van eenheden en het delen van code ingewikkeld omdat verschillende toepassingsconfiguraties mogelijk verschillende waarden van de functieswitch hebben en het is moeilijk om ervoor te zorgen dat alle codepaden werken zoals verwacht.

Het verdient daarom de voorkeur om API's zodanig te structureren dat bijsnijden op natuurlijke wijze kan plaatsvinden zonder functieswitches. Het gebruik van functieswitches moet worden gereserveerd voor situaties waarin bijsnijden moet plaatsvinden, maar het is niet haalbaar om de API's te wijzigen zodat ze op natuurlijke wijze kunnen worden ingekort.

Constructors

Name Description
FeatureSwitchDefinitionAttribute(String)

Initialiseert een nieuw exemplaar van de FeatureSwitchDefinitionAttribute klasse

met de naam van de opgegeven functieswitch.

Eigenschappen

Name Description
SwitchName

De naam van de functieswitch die de waarde voor de opgegeven eigenschap levert.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op