2014-03-28 5 views
0

Я хочу создать метод для получения значения из родительского элемента управления пользователя, но PropertyInfo не может получить значение из родительского элемента управления и выдает исключение. Я думаю, что это происходит потому, что это не фактический тип объекта.Получить значение свойства от родительского элемента управления пользователя

Я использую .NET 2, поэтому я не могу использовать динамическое ключевое слово.

Есть ли способ сделать это?

public object GetFromPar(Control parent, string propertyName, Type parentType) 
    { 
     while (parent != null) 
     { 
      if (parent.GetType().IsSubclassOf(parentType)) 
      { 
       PropertyInfo info = parent.GetType().GetProperty(propertyName); 
       return info.GetValue(parent, null); 
      } 
      else 
      { 
       parent = parent.Parent; 
      } 
     } 

     return null; 
    } 

И вот как я называю эту функцию.

this.GetFromPar(this.Parent, "Name", typeof(InfoControl)); 

InfoControl - это пользовательский элемент управления, который был родительским элементом LoginPanelControl (this).

Заранее спасибо.

+0

Какие исключения у вас есть. –

+0

Исключение: TargetInvocationException InnerException: Указанное приведение недействительно. – LLF

+0

@LastFrog Какая строка является исключением? –

ответ

0
PropertyInfo info = (typeof(parent.GetType())).GetProperty(propertyName); 

Если вы знаете тип родителя, вы можете заменить его на parent.GetType().

+1

Родитель не имеет GetProperty(). – LLF

+0

Это не проблема. Что вы имеете в виду, так я могу сделать это «parent.GetType(). GetProperty (propertyName);» Правильно? – LLF

+0

Но я не могу получить значение «info.GetValue (parent, null);» Я думаю, потому что тип был другим, и он может видеть родителя как Control, а не InfoPanel. – LLF

Смежные вопросы