ここにあなたの質問が何であるかはわかりませんが、これが可能かどうかを尋ねる場合は、この正確な構文ではなく、そうではないと言わざるを得ません。
列挙型は値型であるため、値によって渡されます。したがって、列挙値を受け取るSetFlagなどのメソッドは、そのCOPYを受け取ります。フラグを設定した場合でも、その変更は、呼び出された列挙型ではなく、メソッドスコープに限定されます。
ref
次のように、修飾子を使用してメソッドに渡すことができます。SetFlag(ref enumVariable, EnumType.SingleFlag)
ただし、私が知る限り、これは拡張メソッドとしてサポートされていません。
できることは、一般的な列挙型ヘルパークラスを作成することです。
public static class EnumHelper
{
public void SetFlag<TEnum>(ref TEnum enumValue, TEnum flag)
{
enumValue = enumValue | flag;
}
}
または、既存の変数を変更するのではなく、新しい値を返すSetFlagメソッドを作成します。
public static TEnum SetFlag<TEnum>(this TEnum enumValue, TEnum flag)
{
return enumValue | flag;
}