グリッドビューの列を作成するメソッドに Enum を渡そうとしています。Enum を Enum passEnum または Type enumType として渡すことができますが、どちらも機能しますが、一緒には機能しません。つまり、型として渡すと Enum.GetNames() メソッドがそれを受け入れ、列挙型として渡すと StringEnum.GetString() メソッドがそれを受け入れます。しかし、1つを渡して両方に受け入れさせることはできず、それらを別々に(列挙型と型)渡して両方に受け入れさせることはできません。AMOST が機能する方法:
public static void AddColumnsToGridView(GridView gv, Enum passEnum, Type enumType)
{
BoundField bf = new BoundField();
int c = 0;
foreach (string item in Enum.GetNames(enumType))
{
bf = new BoundField();
bf.HeaderText = StringEnum.GetString((passEnum)c);
bf.DataField = item;
bf.ItemStyle.CssClass = "siteFont leftPaddingThree";
bf.SortExpression = item;
gv.Columns.Add(bf);
c++;
}
}
passEnum の下に、「型または名前空間 'passEnum' が見つかりません... など」という赤い波線が表示されます。何らかの理由で、これを次のようなメソッドの外で機能させることができます。
BoundField bf = new BoundField();
int c = 0;
foreach (string item in Enum.GetNames(typeof(PatientRX)))
{
bf = new BoundField();
bf.HeaderText = StringEnum.GetString((PatientRX)c);
bf.DataField = item;
bf.ItemStyle.CssClass = "siteFont leftPaddingThree";
bf.SortExpression = item;
gvRX.Columns.Add(bf);
c++;
}
StringEnum.GetString() メソッドは、列挙型に関連付けられた文字列値を取得します。列挙型を渡す必要があります。これをメソッドで機能させるにはどうすればよいですか?