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的?我需要投射吗?如果是这样,到什么? –
我不知道 - 我们对背景知之甚少。 (这可以是一个通用的方法,例如?或一个泛型类型?调用者知道该类型,还是应该动态?) –