利用反射读取实体对象的泛型集合IList<T>对象T的值
有一个model层的类包含IList<T>泛型对象,用反射去读T的值,怎样处理?见如下实例:[Serializable]
public class Sdf_Sample
{
#region[成员变量]
private string name;
private List<Sdf_User_Info> sdf_User_Info; #endregion
#region[属性]
///<summary>
///名称
///</summary>
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
///从表对象集合
/// </summary>
[FieldTag(IsChildren = true)]
public virtual IList<Sdf_User_Info> Sdf_User_Info
{
get
{
if (sdf_User_Info == null)
sdf_User_Info = new List<Sdf_User_Info>();
return sdf_User_Info;
}
set
{
sdf_User_Info = new List<Sdf_User_Info>(value);
}
} /// <summary>
}
//test
public class test
{
private void GetInsertSql(T model) {
PropertyInfo[] pis = typeof(T).GetProperties();
foreach (PropertyInfo pi in pis)
{
object obj = pi.GetValue(model, null);//======>IList<T>对象
Type ty;
//============求IList<T>中泛型类型============
Type[] typeArguments = obj.GetType().GetGenericArguments();
if (typeArguments.Length > 0)
{
ty = typeArguments[0];
IList<ty> list = (IList<ty>)obj;
//==这里转换报错,ty找不到类型,怎办?
}
}
} --------------------编程问答-------------------- http://www.cnblogs.com/ninputer/articles/415458.html
不要轻易滥用反射。注意要使用接口进行程序设计,而不是反射!
补充:.NET技术 , .NET技术前瞻