0
我正在實現一個自定義控件,它接收T類型(作爲字符串)和IList中的屬性列表並將其呈現到HTML表格中。我有標記和CreateChildControls
部分。IList中未知類型的訪問屬性<T>
我想要做的是通過反射通過屬性,並獲得在列表上運行的foreach
循環內的屬性值。
我不知道T是在編譯時的東西,我希望能夠以適應列表任何T.
什麼是做到這一點的最好方法是什麼?
編輯:
public class CustomControl : System.Web.UI.WebControls.WebControl, INamingContainer
{
private List<string> _properties;
private **?????????** _dataSource;
public List<string> Properties
{ set { _properties = value; } }
public **?????????** DataSource
{ set { _dataSource = value; } }
}
現在可以說,我屬性的值設置爲這樣的事情:
_properties = new List<string>()
{
"FirstName",
"LastName"
};
,並傳遞類型的人的對象的列表:
public class Person
{
public string FirstName
{ get; set; }
public string LastName
{ get; set; }
}
這個人只是一個佔位符。我想爲List中的任何T做這個。 調用類知道類型T,而自定義控件不知道。此外,自定義控件本身不計劃爲通用類。 希望這有助於集中我的問題。
那麼,你有什麼嘗試? (提示:'typeof(T).GetProperty(...)'是你的朋友...) –
@JonSkeet - 列表的屬性應該是什麼類型? IList的?我需要投射嗎?如果是這樣,到什麼? –
我不知道 - 我們對背景知之甚少。 (這可以是一個通用的方法,例如?或一個泛型類型?調用者知道該類型,還是應該動態?) –