Используется C#, проект - webforms, задача - управлять видимостью web-control через атрибуты
Если проще - нужно получить доступ к свойству обьекта и поменять у этого свойства свойство:)
Вот есть класс с полем
public partial class Doc1 : BaseDoc{
[Hide(1)]
protected DateEdit tbe_DateTo;
}
Есть атрибут
[AttributeUsage(AttributeTargets.Field)]
public class HideAttribute: Attribute
{
public int State { get; set; }
public HideAttribute(int state)
{
State = state;
}
}
Пытаюсь изменить свойство поля
public abstract class BaseDoc{
public void DoFieldManagement()
{
var managementsItems = GetType().GetMembers().Where(m => Attribute.IsDefined(m, typeof(HideAttribute))).ToList();
foreach (var item in managementsItems)
{
WebControl control = new WebControl(HtmlTextWriterTag.A);
if (item is FieldInfo)
{
control = (WebControl)((FieldInfo)item).GetValue(typeof(WebControl));
}
var hideAttr = (HideAttribute)item.GetCustomAttributes(typeof(HideAttribute), true).First();
if (hideAttr.State== 1)
{
control.Visible = false;
}
}
}
Почему то в этом методе, в самом начале, в managementsItems попадает пустой массив.
Почему так?
Спасибо)