FeatureSwitchDefinitionAttribute Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger att den angivna offentliga statiska booleska skrivskyddade egenskapen motsvarar den funktionsväxel som anges med namn.
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
- Arv
- Attribut
Exempel
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() => ...;
}
När appen trimmas med följande funktionsinställningar i projektfilen Feature.IsSupported behandlas den som falseoch Feature.Implementation koden tas bort.
<ItemGroup>
<RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>
Kommentarer
IL-rewriters och kompilatorer kan använda det här attributet för att ersätta returvärdet för den angivna egenskapen med värdet för funktionsväxeln.
Värdet för funktionsväxeln kan bara anges på programnivå och påverkar hela programmet. Det är möjligt att komma in i situationer där ett bibliotek som ingår i programmet kräver att funktionsväxeln är aktiverad, men inte har något sätt att kommunicera detta med programförfattaren.
Funktionsväxlar komplicerar enhetstestning och koddelning eftersom olika programkonfigurationer kan ha olika värden för funktionsväxlingen, och det är svårt att se till att alla kodsökvägar fungerar som förväntat.
Därför är det bättre att strukturera API:er på ett sätt som gör att trimning kan ske naturligt utan några funktionsväxlar. Användning av funktionsväxlar bör reserveras för situationer där trimning måste ske, men det är inte möjligt att ändra API:erna så att de kan trimmas naturligt.
Konstruktorer
| Name | Description |
|---|---|
| FeatureSwitchDefinitionAttribute(String) |
Initierar en ny instans av FeatureSwitchDefinitionAttribute klassen med det angivna funktionsväxlingsnamnet. |
Egenskaper
| Name | Description |
|---|---|
| SwitchName |
Namnet på funktionsväxeln som innehåller värdet för den angivna egenskapen. |
| TypeId |
När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute. (Ärvd från Attribute) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt. (Ärvd från Attribute) |
| GetHashCode() |
Returnerar hash-koden för den här instansen. (Ärvd från Attribute) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsDefaultAttribute() |
När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen. (Ärvd från Attribute) |
| Match(Object) |
När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt. (Ärvd från Attribute) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |