2010-12-15 8 views
0

私はGenerateOutputメソッドを持っています。このメソッドは文字列のリストを出力します。このメソッドは、複数の列挙をパラメータとして取り、どのフラグがメソッドに入力されたかに基づいて結果を出力します。列挙型はコンパイル時に設計されていますが、ユーザーがプログラムで選択したオプションに基づいて実行時に出力を変更することは可能ですか? 本質的に、私は可能な列挙を表す様々なチェックボックスを持っています。ユーザがオプションを選択すると、そのフラグはGenerateOutputメソッドのパラメータとして追加されます。これはできますか?ありがとう実行時に入力列挙型

+0

r GenerateOutput関数 – Francisco

+0

これは、これを動作させるためのテストコードです。このメソッドは 'void GenerateOutput(TestEnumerations tEnums)'であり、 'tEnums'値をコンソールに出力します。実行時に複数のtEnumを入力したいと思います。 – Brap

+0

複数のtEnumを、たとえば、カンマまたは他の文字を入力して解析します。 like:t1、t2そして、string.split( '、')を使い、Enum.Parseを値ごとに使用しますか? – Ostap

答えて

3

あなたは何をしたいと思いますか(私はあなたの質問を完全に理解していません)は、関数に渡すために実行時にEnum値を構築することです。一覧リストを持って、コメントでフランシスコにより示唆されるように、

// In checkbox handlers, e.g. 
tEnums |= TestEnumerations.Value1; 

// Where you call the method 
GenerateOutput(tEnums); 

代わり:

[flags] 
public enum TestEnumerations 
{ 
    Value1 = 1, 
    Value2 = 2, 
    Value3 = 4, 
    //etc 
} 

は、あなたがこれを行うことができます:

あなたの列挙型は、[フラグ]属性で指定されていると仮定すると、 (または各列挙値を1回だけ表示する場合はHashSet)。

// In checkbox handlers, e.g. 
list.Add(TestEnumerations.Value1); 

// Where you call the method 
GenerateOutput(list); 
+0

ありがとうございます。あなたが '| ='をすることができるかどうかは分かりませんでした。それはそれを行う必要があります。 – Brap

+1

これは、値が2の累乗で、[flags]属性が設定されている場合にのみ機能します。 –