标题:如何用通用泛型方法遍历复杂结构对象的所有属性值?
只看楼主
Whitebz
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-28
结帖率:0
已结贴  问题点数:20 回复次数:2 
如何用通用泛型方法遍历复杂结构对象的所有属性值?
例如
public ClassA
{
private IList<ClassB> _field1;
private string _field2;
public IList<ClassB> Field1{get;set;}
public string Field2{get;set;}
....

}
public ClassB
{
private string _f;
public F{set;get;}
}

假设 已经封装好一个 IList<ClassA>
如何用泛型方法 遍历出这个泛型集合所有属性值,主要是Field1 的所有属性值:如F
现在方式是,用
public static string SerializeList<T>(IList<T> objList)
{
if (objList == null || objList.Count <= 0)
return null;
System.Reflection.PropertyInfo[] mPi = typeof(T).GetProperties();
string strName = "", strValue = "";
string strName1 = "", strValue1 = "";
foreach (T t in objList)
{
if (t == null)
continue;
for (int i = 0; i < mPi.Length; i++)
{
System.Reflection.PropertyInfo pi = mPi[i];
strName = pi.Name.Replace("_", "");
strValue = pi.GetValue(t, null) == null ? string.Empty : pi.GetValue(t, null).ToString();
if (pi.PropertyType.IsGenericType)
{
此处如何获取我需要的泛型对象,然后遍历出内部值
}
}
}
}
补充:由于要实现通用方法来遍历,所以用泛型方法.
各位有什么高见,小弟不胜感激

搜索更多相关主题的帖子: null private public return 
2012-06-28 14:48
Whitebz
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-28
得分:0 
这个论坛竟如此冷清啊......
2012-06-28 15:18
serious
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:81
专家分:497
注 册:2009-8-18
得分:20 
你尝试使用“GetGenericArguments”方法了吗:
typeof(IList<string>).GetGenericArguments()[0] ========> System.String

2012-06-29 07:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372420-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107753 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved