请教C#中通过反射获得泛型集合中所有值的问题。
//mainList用于存放多个集合或数组List<object>mainList=newList<object>();//加入mainList的第一个元素为List<i...
//mainList用于存放多个集合或数组
List<object> mainList = new List<object>();
//加入mainList的第一个元素为List<int>类型
List<int> intlist = new List<int>() ;
intlist.Add(1);
intlist.Add(2);
intlist.Add(3);
//加入mainList的第二个元素为List<string>类型
List<string> stringList = new List<string>();
stringList.Add("1");
stringList.Add("2");
stringList.Add("3");
//加入mainList的第三个元素为double型的数组
double[] floatArr = { 1.1, 1.2, 1.3 };
//最后加入的是字典
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("Key1", 1);
dict.Add("Key2", 2);
dict.Add("Key3", 3);
mainList.Add(intlist);
mainList.Add(stringList);
mainList.Add(floatArr);
mainList.Add(dict);
foreach (object obj in mainList)
{
//如何将mainList中所有的值都读出来
}
Console.Read(); 展开
List<object> mainList = new List<object>();
//加入mainList的第一个元素为List<int>类型
List<int> intlist = new List<int>() ;
intlist.Add(1);
intlist.Add(2);
intlist.Add(3);
//加入mainList的第二个元素为List<string>类型
List<string> stringList = new List<string>();
stringList.Add("1");
stringList.Add("2");
stringList.Add("3");
//加入mainList的第三个元素为double型的数组
double[] floatArr = { 1.1, 1.2, 1.3 };
//最后加入的是字典
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("Key1", 1);
dict.Add("Key2", 2);
dict.Add("Key3", 3);
mainList.Add(intlist);
mainList.Add(stringList);
mainList.Add(floatArr);
mainList.Add(dict);
foreach (object obj in mainList)
{
//如何将mainList中所有的值都读出来
}
Console.Read(); 展开
1个回答
展开全部
首先来个不安全的,但是短的版本:
foreach (object obj in mainList)
{
dynamic x = obj;
foreach (var item in x)
{
Console.Write(item);
}
}
因为这些类型没有公共的接口(object不算),所以比较安全的方式是用if else处理了,用Type就够了。
foreach (object obj in mainList)
{
Type objType = obj.GetType();
if (objType == typeof(List<int>))
{
List<int> o = obj as List<int>;
foreach (var i in o)
Console.Write(i);
}
else if (objType == typeof(List<string>))
{
List<string> o = obj as List<string>;
foreach (var s in o)
Console.Write(s);
}
else if (objType == typeof(double[]))
{
double[] o = obj as double[];
foreach (var d in o)
Console.Write(d);
}
else if (objType == typeof(Dictionary<string, int>))
{
Dictionary<string, int> o = obj as Dictionary<string, int>;
foreach (var p in o)
Console.Write(p);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询