2014-03-28 74 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)」獲得值;「 我認爲,因爲類型是不同的,它可能會將父視爲控件而不是InfoPanel。 – LLF