【发布时间】:2016-10-20 22:22:38
【问题描述】:
编码员,
这是我的第一个问题。因此,如果它缺少一些 stackoverflow 模式,请原谅我,我会按照您的要求对其进行编辑。
我所需要的:将我的枚举转换为一个集合(我出来使用的是字典)但忽略枚举主值本身......我只想要 属性(作为 XmlEnum) 和 CHAR 值。这样我就可以填充我的下拉列表并感到高兴。
随便代码:
// whatever.aspx
<asp:DropDownList ID="ddlGreekTeam" runat="server" ... whatever />
<asp:DropDownList ID="ddlMilitaryTeam" runat="server" ... whatever />
// whatever.aspx.cs
private void OnPageLoad()
{
PopulateTeamDropDownLists<GreekTeam>(ddlGreekTeam)
PopulateTeamDropDownLists<MilitaryTeam>(ddlMilitaryTeam)
// ... whatever
}
private void PopulateTeamDropDownLists<TEnum>(DropDownList ddl)
{
ddl.Items.Clear();
ddl.Items.Insert(0, new ListItem("All", null));
foreach(var team in ListTeams<TEnum>())
ddl.Items.Add(new ListItem(team.Value.ToString(), team.Key));
}
// method needed
public IDictionary<string, char> ListTeams<TEnum>()
{
// TODO: the magic I'm looking for...
}
// enums
public enum GreekTeam
{
[XmlEnum("Alpha Team")]
Alpha = 'A',
[XmlEnum("Beta Team")]
Beta = 'B',
[XmlEnum("Chi Team")]
Gamma = 'G',
// ... whatever
}
public enum MilitaryTeam
{
[XmlEnum("Alpha Team")]
Alpha = 'A',
[XmlEnum("Bravo Team")]
Bravo = 'B',
[XmlEnum("Charlie Team")]
Charlie = 'C',
// ... whatever
}
输出:
<select>
<option value="A">Alpha Team</option>
<option value="B">Beta Team</option>
<option value="G">Gamma Team</option>
...
</select>
<select>
<option value="A">Alpha</option>
<option value="B">Bravo Team</option>
<option value="C">Charlie Team</option>
...
</select>
【问题讨论】:
标签: c# generics dictionary enums attributes