利用反射读取实体对象的泛型集合IList对象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找不到类型,怎办?
}
}
}
[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找不到类型,怎办?
}
}
}
...全文
相关推荐
Java泛型的用法及T.class的获取过程解析
四、泛型的使用场景泛型可以应用于多种场景中,例如:* 集合框架:泛型可以用于集合框架中,例如List<T>、Map<T,U>等。
DataReader反射泛型实体对象
使用反射和泛型,我们可以编写一个通用方法,接收`DataReader`和类型信息作为参数,然后逐行读取数据,利用反射实例化指定类型的对象并设置属性值。
C#读取数据库返回泛型集合详解(DataSetToList)
本篇文章主要探讨如何在C#中通过使用`DataSet`对象来读取数据库,并将其转换为泛型集合,如`List<T>`。
C#泛型、反射实例、自动生成sql语句
**三、自动生成SQL语句**在C#中,利用泛型和反射可以创建灵活的数据库操作库,自动根据实体类生成对应的SQL语句。
泛型集合反射保存为xml文件 并可反射读取集合
在.NET框架中,泛型、XML和反射是三个非常重要的概念,它们在处理数据和对象时发挥着关键作用。在给定的标题和描述中,我们看到这些技术被结合使用,实现了自定义类型集合的XML序列化和反序列化。


.NET技术前瞻
