FeatureSwitchDefinitionAttribute クラス

定義

指定したパブリック静的ブール値の読み取り専用プロパティが、名前で指定された機能スイッチに対応することを示します。

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
継承
FeatureSwitchDefinitionAttribute
属性

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

アプリがプロジェクト ファイル内の次の機能設定でトリミングされると、 Feature.IsSupportedfalseとして扱われ、 Feature.Implementation コードは削除されます。

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

注釈

IL リライターとコンパイラは、この属性を使用して、指定されたプロパティの戻り値を機能スイッチの値に置き換えることができます。

機能スイッチの値は、アプリケーション レベルでのみ指定でき、アプリケーション全体に影響します。 アプリケーションの一部である 1 つのライブラリで機能スイッチをオンにする必要があるが、これをアプリケーションの作成者に伝える方法がない状況に陥る可能性があります。

機能スイッチは、アプリケーション構成によって機能スイッチの値が異なる場合があり、すべてのコード パスが期待どおりに動作することを保証することは困難であるため、単体テストとコード共有が複雑になります。

そのため、機能スイッチなしで自然にトリミングが行われるように API を構成することをお勧めします。 機能スイッチの使用は、トリミングが必要な状況に備えて予約する必要がありますが、トリミングを自然に許可するように API を変更することは不可能です。

コンストラクター

名前 説明
FeatureSwitchDefinitionAttribute(String)

FeatureSwitchDefinitionAttribute クラスの新しいインスタンスを初期化します。

を指定した機能スイッチ名で指定します。

プロパティ

名前 説明
SwitchName

指定したプロパティの値を提供する機能スイッチの名前。

TypeId

派生クラスで実装されている場合は、この Attributeの一意の識別子を取得します。

(継承元 Attribute)

メソッド

名前 説明
Equals(Object)

このインスタンスが指定したオブジェクトと等しいかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされた場合、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラスでオーバーライドされた場合、このインスタンスが指定したオブジェクトと等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象