C#では、列挙されたフラグを受け入れるパラメーターに値を「追加」しようとしています。ビット演算子「|」を使用して1行で実行できますが、ループ内のパラメーターに追加できないようです。
次の列挙型をフラグとして指定しています。
[Flags]
public enum ProtectionOptions
{
NoPrevention = 0,
PreventEverything = 1,
PreventCopying = 2,
PreventPrinting = 4,
PrintOnlyLowResolution = 8
}
これで、次のコードを簡単に使用して、パラメーターにフラグ値を追加できます。
myObj.Protection = ProtectionOptions.PreventEverything | ProtectionOptions.PrintOnlyLowResolution;
しかし、私がやりたいのは、CSV文字列(Web.Configから)から保護オプションのリストを取得し、それらをループしてmyObj.ProtectionOptionsプロパティに追加することです。ビット単位のOR「|」を使用せずにループでこれを行う方法がわかりません オペレーター。これが私がやりたいことです:
string protectionOptionsString = "NoPrevention, PreventPrinting";
string[] protectionOptions = protectionOptionsString.Split(',');
foreach (string protectionOption in protectionOptions)
{
myObj.Protection += (ProtectionOptions) Enum.Parse(typeof (ProtectionOptions), protectionOption.Trim());
}
概念的には、これは私が望むものですが、パラメーターへのループ内の値を「+=」することはできません。