Мне нужно использовать отражение для установки двух пользовательских свойств пользовательских userControls
CustomUserControl.cs
......
public string _ValidaMsg { get { return _ValidarMsg; } set { _ValidarMsg = value; } }
public bool _Valida { get { return _Validar; } set { _Validar = value;} }
._Valida
определяет необходимость проверки элемента управления перед отправкой формы.
и ._ValidaMsg
- это сообщение, которое отображается, когда поле не заполнено
В моем form.cs у меня есть напечатанный список с именем listaMetodo (String ControlName,String ControlText,Type Control.Type)
Вот метод, которым я заполняю свой список
private List<xEntidades.entControlValidacion> GetAllControls(Control container)
{
foreach (Control c in container.Controls)
{
GetAllControls(c);
// these txtDescripcion and others are the diferent types of my customs UserControls
if (c.Name.Equals("txtDescripcion") || c.Name.Equals("Combo") || c.Name.Equals("txtCodigo") || c.Name.Equals("txtFecha"))
{
listaMetodo.Add(new xEntidades.entControlValidacion(c.Parent.Name, c.Text, c.GetType()));
}
}
return listaMetodo;
}
Итак, когда у меня есть список со всеми соответствующими элементами управления, мне нужно сравнить его с другим имеющимся у меня элементом управления, который заполнен всеми элементами управления, которые необходимо проверить, давайте назовем его validateList(string NameOfControl,bool Valida , String ValidaMsg)
,
В цикле for во время имитации двух списков у меня есть условие
If(listaMetodo[iExample].ControlName.equals(validateList[jExample].NameOfControl && validateList[jExample].Valida){
//here I should get the instance of the object by reflection and change ._ValidaMsg and ._Valida
}
Итак, как я могу изменить свойства экземпляра объекта, используя Type и ControlName, хранящиеся в моем listaMetodo?
Обязательно использовать отражение? Есть ли другой подход для достижения того, что я смотрю?
Также я работаю с Framework 2.0
Заранее спасибо