Я заполняю страницу элементами управления для чтения свойств класса, используя отражение.Если тип свойства 'String'
, я добавлю текстовое поле.Если тип свойства enum, я добавляю выпадающий список.Теперь я должен заполнить выпадающий список перечислениями.Как это можно сделать?
И класс определения enum (Assignment
), и класс (classOne
), с помощью которого я заполняю страницу элементами управления, находятся в одном и том же Namespace(MySolution.Data)
.При циклическом просмотре свойств classOne, когда имя свойства равно SkillLevel, мне нужно будет перейти к классу присваивания, чтобы получить члены перечисления SkillLevelEnum
и заполнить раскрывающийся список.
То же самое необходимо сделать и для других раскрывающихся списков.
Мой код:
namespace MySolution.Data
{
public class classOne : MyAdapter
{
private string _Model;
public string Model
{
get { return _Model; }
set { _Model = value; }
}
private Assignement.SkillLevelEnum _SkillLevel;
public Assignement.SkillLevelEnum SkillLevel
{
get { return _SkillLevel; }
set { _SkillLevel = value; }
}
private Assignement.MinimalSkillsEnum _MinimalSkill;
public Assignement.MinimalSkillsEnum MinimalSkill
{
get { return _MinimalSkill; }
set { _MinimalSkill = value; }
}
public Assignemen.WorkLoadEnum WorkLoad
{
get { return _WorkLoad; }
set { _WorkLoad = value; }
}
}
public class Assignement : MyAdapter
{
#region Enumerations
public enum SkillLevelEnum
{
LowerSkills = 0, HighestSkills = 1, Any = 2
}
public enum MinimalSkillsEnum
{
Accountable = 0,
Responsible = 1,
Expert = 2,
Senior = 3,
Medium = 4,
Junior = 5
}
public enum WorkLoadEnum
{
LessBusy = 0, MostBusy = 1, Any = 2
}
#endregion
}
}
Спасибо
Редактировать:
Я не хочужестко закодировать любое из имен свойств.Я перебираю свойства, как показано ниже.
properties = Utility.GetAllPropertyForClass ("className")
Panel panel = new Panel ();
panelMe.Controls.Add (panel);
foreach (свойство PropertyInfo в свойствах) {
if (!property.PropertyType.IsEnum)
{
TextBox txt = new TextBox();
txt.ID = "txt" + i.ToString();
panel.Controls.Add(txt);
}
else
{
DropDownList ddl = new DropDownList();
ddl.ID = "ddl" + i.ToString();
// Here based on the property.name i need to get the enum members which is defined in a different class using reflection
panel.Controls.Add(ddl);
}
panel.Controls.Add(new LiteralControl("<br/>"));
i++;
}